mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 07:18:39 +09:00
Merge remote-tracking branch 'origin/master' into custom
This commit is contained in:
commit
e4a4b3aee3
76 changed files with 5872 additions and 988 deletions
BIN
config/external/icu/data/icudt58l.dat
vendored
BIN
config/external/icu/data/icudt58l.dat
vendored
Binary file not shown.
|
|
@ -779,7 +779,8 @@ exports.CSS_PROPERTIES = {
|
|||
"column-gap"
|
||||
],
|
||||
"supports": [
|
||||
6
|
||||
6,
|
||||
8
|
||||
],
|
||||
"values": [
|
||||
"-moz-calc",
|
||||
|
|
@ -5434,7 +5435,8 @@ exports.CSS_PROPERTIES = {
|
|||
"column-gap"
|
||||
],
|
||||
"supports": [
|
||||
6
|
||||
6,
|
||||
8
|
||||
],
|
||||
"values": [
|
||||
"-moz-calc",
|
||||
|
|
|
|||
|
|
@ -90,7 +90,9 @@ GridLines::SetLineInfo(const ComputedGridTrackInfo* aTrackInfo,
|
|||
for (uint32_t i = aTrackInfo->mStartFragmentTrack;
|
||||
i < aTrackInfo->mEndFragmentTrack + 1;
|
||||
i++) {
|
||||
uint32_t line1Index = i + 1;
|
||||
// Since line indexes are 1-based, calculate a 1-based value
|
||||
// for this track to simplify some calculations.
|
||||
const uint32_t line1Index = i + 1;
|
||||
|
||||
startOfNextTrack = (i < aTrackInfo->mEndFragmentTrack) ?
|
||||
aTrackInfo->mPositions[i] :
|
||||
|
|
@ -127,7 +129,8 @@ GridLines::SetLineInfo(const ComputedGridTrackInfo* aTrackInfo,
|
|||
}
|
||||
}
|
||||
|
||||
if (i >= aTrackInfo->mRepeatFirstTrack &&
|
||||
if (i >= (aTrackInfo->mRepeatFirstTrack +
|
||||
aTrackInfo->mNumLeadingImplicitTracks) &&
|
||||
repeatIndex < numRepeatTracks) {
|
||||
numAddedLines += AppendRemovedAutoFits(aTrackInfo,
|
||||
aLineInfo,
|
||||
|
|
@ -139,23 +142,30 @@ GridLines::SetLineInfo(const ComputedGridTrackInfo* aTrackInfo,
|
|||
|
||||
RefPtr<GridLine> line = new GridLine(this);
|
||||
mLines.AppendElement(line);
|
||||
MOZ_ASSERT(line1Index > 0, "line1Index must be positive.");
|
||||
bool isBeforeFirstExplicit =
|
||||
(line1Index <= aTrackInfo->mNumLeadingImplicitTracks);
|
||||
// Calculate an actionable line number for this line, that could be used
|
||||
// in a css grid property to align a grid item or area at that line.
|
||||
// For implicit lines that appear before line 1, report a number of 0.
|
||||
// We can't report negative indexes, because those have a different
|
||||
// meaning in the css grid spec (negative indexes are negative-1-based
|
||||
// from the end of the grid decreasing towards the front).
|
||||
uint32_t lineNumber = isBeforeFirstExplicit ? 0 :
|
||||
(line1Index - aTrackInfo->mNumLeadingImplicitTracks + numAddedLines);
|
||||
GridDeclaration lineType =
|
||||
(isBeforeFirstExplicit ||
|
||||
line1Index > (aTrackInfo->mNumLeadingImplicitTracks +
|
||||
aTrackInfo->mNumExplicitTracks + 1))
|
||||
? GridDeclaration::Implicit
|
||||
: GridDeclaration::Explicit;
|
||||
line->SetLineValues(
|
||||
lineNames,
|
||||
nsPresContext::AppUnitsToDoubleCSSPixels(lastTrackEdge),
|
||||
nsPresContext::AppUnitsToDoubleCSSPixels(startOfNextTrack -
|
||||
lastTrackEdge),
|
||||
line1Index + numAddedLines,
|
||||
(
|
||||
// Implicit if there are no explicit tracks, or if the index
|
||||
// is before the first explicit track, or after
|
||||
// a track beyond the last explicit track.
|
||||
(aTrackInfo->mNumExplicitTracks == 0) ||
|
||||
(i < aTrackInfo->mNumLeadingImplicitTracks) ||
|
||||
(i > aTrackInfo->mNumLeadingImplicitTracks +
|
||||
aTrackInfo->mNumExplicitTracks) ?
|
||||
GridDeclaration::Implicit :
|
||||
GridDeclaration::Explicit
|
||||
)
|
||||
lineNumber,
|
||||
lineType
|
||||
);
|
||||
|
||||
if (i < aTrackInfo->mEndFragmentTrack) {
|
||||
|
|
@ -215,11 +225,13 @@ GridLines::AppendRemovedAutoFits(const ComputedGridTrackInfo* aTrackInfo,
|
|||
|
||||
RefPtr<GridLine> line = new GridLine(this);
|
||||
mLines.AppendElement(line);
|
||||
uint32_t lineNumber = aTrackInfo->mRepeatFirstTrack +
|
||||
aRepeatIndex + 1;
|
||||
line->SetLineValues(
|
||||
aLineNames,
|
||||
nsPresContext::AppUnitsToDoubleCSSPixels(aLastTrackEdge),
|
||||
nsPresContext::AppUnitsToDoubleCSSPixels(0),
|
||||
aTrackInfo->mRepeatFirstTrack + aRepeatIndex + 1,
|
||||
lineNumber,
|
||||
GridDeclaration::Explicit
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
[chrome/test_grid_fragmentation.html]
|
||||
[chrome/test_grid_implicit.html]
|
||||
[chrome/test_grid_lines.html]
|
||||
[chrome/test_grid_line_numbers.html]
|
||||
[chrome/test_grid_object.html]
|
||||
[chrome/test_grid_repeats.html]
|
||||
[chrome/test_grid_tracks.html]
|
||||
|
|
|
|||
|
|
@ -33,6 +33,11 @@ body {
|
|||
grid-template-rows: [areaA-end areaB-start areaC-end] 50px [areaA-start areaB-end areaC-start];
|
||||
}
|
||||
|
||||
.template4 {
|
||||
grid-template-columns: 100px 50px 100px;
|
||||
grid-template-rows: 50px;
|
||||
}
|
||||
|
||||
.box {
|
||||
background-color: #444;
|
||||
color: #fff;
|
||||
|
|
@ -50,6 +55,9 @@ body {
|
|||
.d {
|
||||
grid-area: areaD;
|
||||
}
|
||||
.e {
|
||||
grid-column: -7 / 5;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
|
|
@ -78,9 +86,12 @@ function runTests() {
|
|||
is(grid.cols.lines[4].type, "implicit", "Grid column line 5 is implicit.");
|
||||
is(grid.cols.lines[5].type, "implicit", "Grid column line 6 is implicit.");
|
||||
|
||||
is(grid.rows.lines[0].type, "implicit", "Grid row line 1 is implicit.");
|
||||
is(grid.rows.lines[1].type, "explicit", "Grid row line 2 is explicit.");
|
||||
is(grid.rows.lines[3].type, "explicit", "Grid row line 4 is explicit.");
|
||||
is(grid.rows.lines[0].type, "implicit", "Grid row line 0 is implicit.");
|
||||
is(grid.rows.lines[0].number, 0, "Grid row line 0 has correct number.");
|
||||
is(grid.rows.lines[1].type, "explicit", "Grid row line 1 is explicit.");
|
||||
is(grid.rows.lines[1].number, 1, "Grid row line 1 has correct number.");
|
||||
is(grid.rows.lines[3].type, "explicit", "Grid row line 3 is explicit.");
|
||||
is(grid.rows.lines[3].number, 3, "Grid row line 3 has correct number.");
|
||||
|
||||
// test that row line 1 gets the name forced on it by placement of item B
|
||||
todo_isnot(grid.rows.lines[0].names.indexOf("got-this-name-implicitly"), -1,
|
||||
|
|
@ -221,6 +232,48 @@ function runTests() {
|
|||
}
|
||||
}
|
||||
|
||||
// test the fourth grid wrapper
|
||||
wrapper = document.getElementById("wrapper4");
|
||||
grid = wrapper.getGridFragments()[0];
|
||||
|
||||
// test column and row line counts
|
||||
is(grid.cols.lines.length, 8,
|
||||
"Grid.cols.lines property expands properly with implicit columns on both sides."
|
||||
);
|
||||
is(grid.rows.lines.length, 2,
|
||||
"Grid.rows.lines property is as expected"
|
||||
);
|
||||
|
||||
if (grid.cols.lines.length == 8) {
|
||||
// check that all the lines get correct implict/explicit type and number
|
||||
let expectedType = [
|
||||
"implicit",
|
||||
"implicit",
|
||||
"implicit",
|
||||
"explicit",
|
||||
"explicit",
|
||||
"explicit",
|
||||
"explicit",
|
||||
"implicit",
|
||||
];
|
||||
let expectedNumber = [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
];
|
||||
|
||||
for (let i = 0; i < grid.cols.lines.length; i++) {
|
||||
let line = grid.cols.lines[i];
|
||||
is(line.type, expectedType[i], "Line index " + i + " has expected type.");
|
||||
is(line.number, expectedNumber[i], "Line index " + i + " has expected number.");
|
||||
}
|
||||
}
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -246,5 +299,9 @@ function runTests() {
|
|||
<div id="boxC" class="box c">C</div>
|
||||
</div>
|
||||
|
||||
<div id="wrapper4" class="wrapper template4">
|
||||
<div id="boxE" class="box e">E</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
101
dom/grid/test/chrome/test_grid_line_numbers.html
Normal file
101
dom/grid/test/chrome/test_grid_line_numbers.html
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
||||
<style>
|
||||
body {
|
||||
margin: 40px;
|
||||
}
|
||||
.wrapper {
|
||||
display: grid;
|
||||
grid-gap: 0px;
|
||||
background-color: #f00;
|
||||
}
|
||||
.wrapper > div {
|
||||
background-color: #444;
|
||||
color: #fff;
|
||||
}
|
||||
.repeatColumns {
|
||||
width: 600px;
|
||||
grid-auto-columns: 50px;
|
||||
grid-template-columns: repeat(auto-fit, 100px);
|
||||
}
|
||||
.repeatRows {
|
||||
height: 600px;
|
||||
grid-auto-rows: 50px;
|
||||
grid-template-rows: repeat(auto-fit, 100px);
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
function testLines(elementName, lines, expectedValues) {
|
||||
is(lines.count, expectedValues.count, elementName + " has expected number of lines.");
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
is(lines[i].number, expectedValues[i].number, elementName + " line index " + i + " has expected number.");
|
||||
}
|
||||
}
|
||||
|
||||
function runTests() {
|
||||
let grid;
|
||||
let lines;
|
||||
let expectedValues;
|
||||
|
||||
grid = document.getElementById("gridWithColumns").getGridFragments()[0];
|
||||
lines = grid.cols.lines;
|
||||
expectedValues = [
|
||||
{ "number": 0 },
|
||||
{ "number": 0 },
|
||||
{ "number": 1 },
|
||||
{ "number": 2 },
|
||||
{ "number": 3 },
|
||||
{ "number": 4 },
|
||||
{ "number": 5 },
|
||||
{ "number": 6 },
|
||||
{ "number": 7 },
|
||||
{ "number": 8 },
|
||||
];
|
||||
testLines("gridWithColumns", lines, expectedValues);
|
||||
|
||||
grid = document.getElementById("gridWithRows").getGridFragments()[0];
|
||||
lines = grid.rows.lines;
|
||||
expectedValues = [
|
||||
{ "number": 0 },
|
||||
{ "number": 0 },
|
||||
{ "number": 1 },
|
||||
{ "number": 2 },
|
||||
{ "number": 3 },
|
||||
{ "number": 4 },
|
||||
{ "number": 5 },
|
||||
{ "number": 6 },
|
||||
{ "number": 7 },
|
||||
{ "number": 8 },
|
||||
];
|
||||
testLines("gridWithRows", lines, expectedValues);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onLoad="runTests();">
|
||||
|
||||
<div id="gridWithColumns" class="wrapper repeatColumns">
|
||||
<div style="grid-column: -9">A</div>
|
||||
<div style="grid-column: 4">B</div>
|
||||
<div style="grid-column: 7">C</div>
|
||||
</div>
|
||||
|
||||
<div id="gridWithRows" class="wrapper repeatRows">
|
||||
<div style="grid-row: span 3 / 2">A</div>
|
||||
<div style="grid-row: 4">B</div>
|
||||
<div style="grid-row: 5">C</div>
|
||||
<div style="grid-row: span 2 / 8">D</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
commit a1dd3c5661404aa93924e737aeb86acf130b8889
|
||||
Author: yumaoka <y.umaoka@gmail.com>
|
||||
Date: Tue Mar 26 19:02:10 2019 -0400
|
||||
commit 4d027901ef4d3288b2ca264ba1f532cf826190ac
|
||||
Author: Yoshito Umaoka <yumaoka@users.noreply.github.com>
|
||||
Date: Fri Sep 13 18:23:18 2019 -0400
|
||||
|
||||
ICU-20522 tzdata2019a updates
|
||||
ICU-20823 ICU time zone data updates for 2019c
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
2019a
|
||||
2019c
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -3647,11 +3647,11 @@ metaZones:table(nofallback){
|
|||
{
|
||||
"Europe_Eastern",
|
||||
"1970-01-01 00:00",
|
||||
"1978-10-14 21:00",
|
||||
"1978-06-28 21:00",
|
||||
}
|
||||
{
|
||||
"Turkey",
|
||||
"1978-10-14 21:00",
|
||||
"1978-06-28 21:00",
|
||||
"1985-04-19 21:00",
|
||||
}
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ windowsZones:table(nofallback){
|
|||
"Alaskan Standard Time"{
|
||||
001{"America/Anchorage"}
|
||||
US{
|
||||
"America/Anchorage America/Juneau America/Nome America/Sitka America/"
|
||||
"Yakutat"
|
||||
"America/Anchorage America/Juneau America/Metlakatla America/Nome Ame"
|
||||
"rica/Sitka America/Yakutat"
|
||||
}
|
||||
}
|
||||
"Aleutian Standard Time"{
|
||||
|
|
@ -287,7 +287,7 @@ windowsZones:table(nofallback){
|
|||
}
|
||||
"GTB Standard Time"{
|
||||
001{"Europe/Bucharest"}
|
||||
CY{"Asia/Famagusta Asia/Nicosia"}
|
||||
CY{"Asia/Nicosia Asia/Famagusta"}
|
||||
GR{"Europe/Athens"}
|
||||
RO{"Europe/Bucharest"}
|
||||
}
|
||||
|
|
@ -371,7 +371,6 @@ windowsZones:table(nofallback){
|
|||
}
|
||||
"Magallanes Standard Time"{
|
||||
001{"America/Punta_Arenas"}
|
||||
AQ{"Antarctica/Palmer"}
|
||||
CL{"America/Punta_Arenas"}
|
||||
}
|
||||
"Marquesas Standard Time"{
|
||||
|
|
@ -468,7 +467,7 @@ windowsZones:table(nofallback){
|
|||
"Pacific Standard Time"{
|
||||
001{"America/Los_Angeles"}
|
||||
CA{"America/Vancouver America/Dawson America/Whitehorse"}
|
||||
US{"America/Los_Angeles America/Metlakatla"}
|
||||
US{"America/Los_Angeles"}
|
||||
ZZ{"PST8PDT"}
|
||||
}
|
||||
"Pakistan Standard Time"{
|
||||
|
|
@ -479,6 +478,10 @@ windowsZones:table(nofallback){
|
|||
001{"America/Asuncion"}
|
||||
PY{"America/Asuncion"}
|
||||
}
|
||||
"Qyzylorda Standard Time"{
|
||||
001{"Asia/Qyzylorda"}
|
||||
KZ{"Asia/Qyzylorda"}
|
||||
}
|
||||
"Romance Standard Time"{
|
||||
001{"Europe/Paris"}
|
||||
BE{"Europe/Brussels"}
|
||||
|
|
@ -500,12 +503,12 @@ windowsZones:table(nofallback){
|
|||
}
|
||||
"Russian Standard Time"{
|
||||
001{"Europe/Moscow"}
|
||||
RU{"Europe/Moscow Europe/Kirov Europe/Volgograd"}
|
||||
RU{"Europe/Moscow Europe/Kirov"}
|
||||
UA{"Europe/Simferopol"}
|
||||
}
|
||||
"SA Eastern Standard Time"{
|
||||
001{"America/Cayenne"}
|
||||
AQ{"Antarctica/Rothera"}
|
||||
AQ{"Antarctica/Rothera Antarctica/Palmer"}
|
||||
BR{
|
||||
"America/Fortaleza America/Belem America/Maceio America/Recife Americ"
|
||||
"a/Santarem"
|
||||
|
|
@ -590,6 +593,7 @@ windowsZones:table(nofallback){
|
|||
}
|
||||
"Singapore Standard Time"{
|
||||
001{"Asia/Singapore"}
|
||||
AQ{"Antarctica/Casey"}
|
||||
BN{"Asia/Brunei"}
|
||||
ID{"Asia/Makassar"}
|
||||
MY{"Asia/Kuala_Lumpur Asia/Kuching"}
|
||||
|
|
@ -731,9 +735,12 @@ windowsZones:table(nofallback){
|
|||
001{"Asia/Vladivostok"}
|
||||
RU{"Asia/Vladivostok Asia/Ust-Nera"}
|
||||
}
|
||||
"Volgograd Standard Time"{
|
||||
001{"Europe/Volgograd"}
|
||||
RU{"Europe/Volgograd"}
|
||||
}
|
||||
"W. Australia Standard Time"{
|
||||
001{"Australia/Perth"}
|
||||
AQ{"Antarctica/Casey"}
|
||||
AU{"Australia/Perth"}
|
||||
}
|
||||
"W. Central Africa Standard Time"{
|
||||
|
|
@ -779,7 +786,7 @@ windowsZones:table(nofallback){
|
|||
"West Asia Standard Time"{
|
||||
001{"Asia/Tashkent"}
|
||||
AQ{"Antarctica/Mawson"}
|
||||
KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau Asia/Qyzylorda"}
|
||||
KZ{"Asia/Oral Asia/Aqtau Asia/Aqtobe Asia/Atyrau"}
|
||||
MV{"Indian/Maldives"}
|
||||
TF{"Indian/Kerguelen"}
|
||||
TJ{"Asia/Dushanbe"}
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@
|
|||
// License & terms of use: http://www.unicode.org/copyright.html#License
|
||||
//---------------------------------------------------------
|
||||
// Build tool: tz2icu
|
||||
// Build date: Tue Mar 26 16:57:59 2019
|
||||
// Build date: Fri Sep 13 17:31:25 2019
|
||||
// tz database: ftp://ftp.iana.org/tz/
|
||||
// tz version: 2019a
|
||||
// ICU version: 64.1
|
||||
// tz version: 2019c
|
||||
// ICU version: 65.1
|
||||
//---------------------------------------------------------
|
||||
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
|
||||
// >> !!! >>> DO NOT EDIT <<< !!! <<
|
||||
//---------------------------------------------------------
|
||||
|
||||
zoneinfo64:table(nofallback) {
|
||||
TZVersion { "2019a" }
|
||||
TZVersion { "2019c" }
|
||||
Zones:array {
|
||||
/* ACT */ :int { 355 } //Z#0
|
||||
/* AET */ :int { 367 } //Z#1
|
||||
|
|
@ -60,8 +60,9 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#18
|
||||
/* Africa/Casablanca */ :table {
|
||||
trans:intvector { -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590285600, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835229600, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080173600, 2107994400, 2111018400, 2138234400, 2141863200 }
|
||||
transPost32:intvector { 0, -2125888096, 0, -2122864096, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969849696, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877920096, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724905696, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632976096, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479961696, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1388032096, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326947296, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1235017696, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1143088096, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1082003296, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -990073696, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -898144096, 0, -870323296, 0, -867299296, 0, -840083296, 0, -837059296, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -745129696, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -653200096, 0, -625379296, 0, -622355296, 0, -595139296, 0, -592115296 }
|
||||
typeOffsets:intvector { -1820, 0, 0, 0, 0, 3600, 3600, 0 }
|
||||
typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
|
||||
typeMap:bin { "01020102010201020102010201020102010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
|
||||
} //Z#19
|
||||
/* Africa/Ceuta */ :table {
|
||||
transPre32:intvector { -1, 2117514496 }
|
||||
|
|
@ -79,8 +80,9 @@ zoneinfo64:table(nofallback) {
|
|||
/* Africa/Douala */ :int { 36 } //Z#25
|
||||
/* Africa/El_Aaiun */ :table {
|
||||
trans:intvector { -1136070432, 198291600, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 1212278400, 1220223600, 1243814400, 1250809200, 1272758400, 1281222000, 1301788800, 1312066800, 1335664800, 1342749600, 1345428000, 1348970400, 1367114400, 1373162400, 1376100000, 1382839200, 1396144800, 1403920800, 1406944800, 1414288800, 1427594400, 1434247200, 1437271200, 1445738400, 1459044000, 1465092000, 1468116000, 1477792800, 1490493600, 1495332000, 1498960800, 1509242400, 1521943200, 1526176800, 1529200800, 1557021600, 1560045600, 1587261600, 1590285600, 1618106400, 1621130400, 1648346400, 1651975200, 1679191200, 1682215200, 1710036000, 1713060000, 1740276000, 1743904800, 1771120800, 1774144800, 1801965600, 1804989600, 1832205600, 1835229600, 1863050400, 1866074400, 1893290400, 1896919200, 1924135200, 1927159200, 1954980000, 1958004000, 1985220000, 1988848800, 2016064800, 2019088800, 2046304800, 2049933600, 2077149600, 2080173600, 2107994400, 2111018400, 2138234400, 2141863200 }
|
||||
transPost32:intvector { 0, -2125888096, 0, -2122864096, 0, -2095043296, 0, -2092019296, 0, -2064803296, 0, -2061174496, 0, -2033958496, 0, -2030934496, 0, -2003718496, 0, -2000089696, 0, -1972873696, 0, -1969849696, 0, -1942028896, 0, -1939004896, 0, -1911788896, 0, -1908160096, 0, -1880944096, 0, -1877920096, 0, -1850099296, 0, -1847075296, 0, -1819859296, 0, -1816230496, 0, -1789014496, 0, -1785990496, 0, -1758774496, 0, -1755145696, 0, -1727929696, 0, -1724905696, 0, -1697084896, 0, -1694060896, 0, -1666844896, 0, -1663216096, 0, -1636000096, 0, -1632976096, 0, -1605155296, 0, -1602131296, 0, -1574915296, 0, -1571286496, 0, -1544070496, 0, -1541046496, 0, -1513830496, 0, -1510201696, 0, -1482985696, 0, -1479961696, 0, -1452140896, 0, -1449116896, 0, -1421900896, 0, -1418272096, 0, -1391056096, 0, -1388032096, 0, -1360211296, 0, -1357187296, 0, -1329971296, 0, -1326947296, 0, -1299126496, 0, -1296102496, 0, -1268886496, 0, -1265257696, 0, -1238041696, 0, -1235017696, 0, -1207196896, 0, -1204172896, 0, -1176956896, 0, -1173328096, 0, -1146112096, 0, -1143088096, 0, -1115267296, 0, -1112243296, 0, -1085027296, 0, -1082003296, 0, -1054182496, 0, -1051158496, 0, -1023942496, 0, -1020313696, 0, -993097696, 0, -990073696, 0, -962252896, 0, -959228896, 0, -932012896, 0, -928384096, 0, -901168096, 0, -898144096, 0, -870323296, 0, -867299296, 0, -840083296, 0, -837059296, 0, -809238496, 0, -806214496, 0, -778998496, 0, -775369696, 0, -748153696, 0, -745129696, 0, -717308896, 0, -714284896, 0, -687068896, 0, -683440096, 0, -656224096, 0, -653200096, 0, -625379296, 0, -622355296, 0, -595139296, 0, -592115296 }
|
||||
typeOffsets:intvector { -3168, 0, -3600, 0, 0, 0, 0, 3600 }
|
||||
typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }
|
||||
typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203" }
|
||||
} //Z#26
|
||||
/* Africa/Freetown */ :int { 5 } //Z#27
|
||||
/* Africa/Gaborone */ :int { 43 } //Z#28
|
||||
|
|
@ -355,13 +357,9 @@ zoneinfo64:table(nofallback) {
|
|||
finalYear:int { 2008 }
|
||||
} //Z#91
|
||||
/* America/Campo_Grande */ :table {
|
||||
trans:intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400, 1572753600, 1581822000, 1604203200, 1613876400, 1636257600, 1645326000, 1667707200, 1677380400, 1699156800, 1708225200, 1730606400, 1739674800, 1762056000, 1771729200, 1793505600, 1803178800, 1825560000, 1834628400, 1857009600, 1866078000, 1888459200, 1897527600, 1919908800, 1928977200, 1951358400, 1960426800, 1983412800, 1992481200, 2014862400, 2024535600, 2046312000, 2055380400, 2077761600, 2086830000, 2109211200, 2118884400, 2140660800 }
|
||||
transPost32:intvector { 0, -2144633296, 0, -2122252096 }
|
||||
trans:intvector { -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400 }
|
||||
typeOffsets:intvector { -13108, 0, -14400, 0, -14400, 3600 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
|
||||
finalRule { "Brazil" }
|
||||
finalRaw:int { -14400 }
|
||||
finalYear:int { 2039 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
} //Z#92
|
||||
/* America/Cancun */ :table {
|
||||
trans:intvector { -1514743200, 377935200, 828860400, 846396000, 860310000, 877845600, 891759600, 902037600, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1175414400, 1193554800, 1207468800, 1225004400, 1238918400, 1256454000, 1270368000, 1288508400, 1301817600, 1319958000, 1333267200, 1351407600, 1365321600, 1382857200, 1396771200, 1414306800, 1422777600 }
|
||||
|
|
@ -413,13 +411,9 @@ zoneinfo64:table(nofallback) {
|
|||
typeMap:bin { "020102" }
|
||||
} //Z#103
|
||||
/* America/Cuiaba */ :table {
|
||||
trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400, 1572753600, 1581822000, 1604203200, 1613876400, 1636257600, 1645326000, 1667707200, 1677380400, 1699156800, 1708225200, 1730606400, 1739674800, 1762056000, 1771729200, 1793505600, 1803178800, 1825560000, 1834628400, 1857009600, 1866078000, 1888459200, 1897527600, 1919908800, 1928977200, 1951358400, 1960426800, 1983412800, 1992481200, 2014862400, 2024535600, 2046312000, 2055380400, 2077761600, 2086830000, 2109211200, 2118884400, 2140660800 }
|
||||
transPost32:intvector { 0, -2144633296, 0, -2122252096 }
|
||||
trans:intvector { -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1541304000, 1550372400 }
|
||||
typeOffsets:intvector { -13460, 0, -14400, 0, -14400, 3600 }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
|
||||
finalRule { "Brazil" }
|
||||
finalRaw:int { -14400 }
|
||||
finalYear:int { 2039 }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
} //Z#104
|
||||
/* America/Curacao */ :table {
|
||||
trans:intvector { -1826738653, -157750200 }
|
||||
|
|
@ -458,9 +452,9 @@ zoneinfo64:table(nofallback) {
|
|||
links:intvector { 109, 204, 544, 624 }
|
||||
} //Z#109
|
||||
/* America/Detroit */ :table {
|
||||
trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
|
||||
trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, -80506740, -68666400, -52938000, -37216800, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
|
||||
typeOffsets:intvector { -19931, 0, -21600, 0, -18000, 0, -18000, 3600 }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
|
||||
typeMap:bin { "0102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
|
||||
finalRule { "US" }
|
||||
finalRaw:int { -18000 }
|
||||
finalYear:int { 2008 }
|
||||
|
|
@ -468,9 +462,9 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#110
|
||||
/* America/Dominica */ :int { 186 } //Z#111
|
||||
/* America/Edmonton */ :table {
|
||||
trans:intvector { -1998663968, -1632063600, -1615132800, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -765388800, -715791600, -702489600, -84380400, -68659200, -21481200, -5760000, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
|
||||
trans:intvector { -1998663968, -1632063600, -1615132800, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -765388800, -715791600, -702489600, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
|
||||
typeOffsets:intvector { -27232, 0, -25200, 0, -25200, 3600 }
|
||||
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
finalRule { "Canada" }
|
||||
finalRaw:int { -25200 }
|
||||
finalYear:int { 2008 }
|
||||
|
|
@ -615,9 +609,9 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#134
|
||||
/* America/Indiana/Tell_City */ :table {
|
||||
transPre32:intvector { -1, 1577320096 }
|
||||
trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -747244800, -733942800, -526492800, -513190800, -495043200, -481741200, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -289414800, -273686400, -260989200, -242236800, -226515600, -210787200, -195066000, -179337600, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600 }
|
||||
trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -765392400, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -68662800, -52934400, -37213200, -21484800, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600 }
|
||||
typeOffsets:intvector { -20823, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201030403040302010201" }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201030102010403040302010201" }
|
||||
finalRule { "US" }
|
||||
finalRaw:int { -21600 }
|
||||
finalYear:int { 2008 }
|
||||
|
|
@ -684,7 +678,7 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#144
|
||||
/* America/Kentucky/Louisville */ :table {
|
||||
transPre32:intvector { -1, 1577320096 }
|
||||
trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -765392400, -757360800, -744224400, -715795200, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
|
||||
trans:intvector { -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -765392400, -747251940, -744224400, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
|
||||
typeOffsets:intvector { -20582, 0, -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
|
||||
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102030403040304030403040304030203040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
|
||||
finalRule { "US" }
|
||||
|
|
@ -1037,13 +1031,9 @@ zoneinfo64:table(nofallback) {
|
|||
typeMap:bin { "0401030102010201020102010201050105" }
|
||||
} //Z#201
|
||||
/* America/Sao_Paulo */ :table {
|
||||
trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1541300400, 1550368800, 1572750000, 1581818400, 1604199600, 1613872800, 1636254000, 1645322400, 1667703600, 1677376800, 1699153200, 1708221600, 1730602800, 1739671200, 1762052400, 1771725600, 1793502000, 1803175200, 1825556400, 1834624800, 1857006000, 1866074400, 1888455600, 1897524000, 1919905200, 1928973600, 1951354800, 1960423200, 1983409200, 1992477600, 2014858800, 2024532000, 2046308400, 2055376800, 2077758000, 2086826400, 2109207600, 2118880800, 2140657200 }
|
||||
transPost32:intvector { 0, -2144636896, 0, -2122255696 }
|
||||
trans:intvector { -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1541300400, 1550368800 }
|
||||
typeOffsets:intvector { -11188, 0, -10800, 0, -10800, 3600 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
|
||||
finalRule { "Brazil" }
|
||||
finalRaw:int { -10800 }
|
||||
finalYear:int { 2039 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
links:intvector { 202, 372, 376 }
|
||||
} //Z#202
|
||||
/* America/Scoresbysund */ :table {
|
||||
|
|
@ -1127,7 +1117,7 @@ zoneinfo64:table(nofallback) {
|
|||
/* America/Tortola */ :int { 186 } //Z#218
|
||||
/* America/Vancouver */ :table {
|
||||
transPre32:intvector { -1, 1581086444 }
|
||||
trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -732726000, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
|
||||
trans:intvector { -1632060000, -1615129200, -880207200, -765385200, -747237600, -733935600, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
|
||||
typeOffsets:intvector { -29548, 0, -28800, 0, -28800, 3600 }
|
||||
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
finalRule { "Canada" }
|
||||
|
|
@ -1374,22 +1364,22 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#267
|
||||
/* Asia/Gaza */ :table {
|
||||
transPre32:intvector { -1, 2109557424 }
|
||||
trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }
|
||||
trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1219957200, 1238104800, 1252015200, 1269640860, 1281474000, 1301608860, 1312146000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572040800 }
|
||||
typeOffsets:intvector { 8272, 0, 7200, 0, 7200, 3600 }
|
||||
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
finalRule { "Palestine" }
|
||||
finalRaw:int { 7200 }
|
||||
finalYear:int { 2017 }
|
||||
finalYear:int { 2020 }
|
||||
} //Z#268
|
||||
/* Asia/Harbin */ :int { 314 } //Z#269
|
||||
/* Asia/Hebron */ :table {
|
||||
transPre32:intvector { -1, 2109557273 }
|
||||
trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000 }
|
||||
trans:intvector { -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 334015200, 337644000, 452556000, 462232800, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576626400, 589323600, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1206655200, 1220216400, 1238104800, 1252015200, 1269554400, 1281474000, 1301608860, 1312146000, 1314655200, 1317330000, 1333058400, 1348178400, 1364508000, 1380229200, 1395957600, 1414098000, 1427493600, 1445547600, 1458946800, 1477692000, 1490396400, 1509141600, 1521846000, 1540591200, 1553810400, 1572040800 }
|
||||
typeOffsets:intvector { 8423, 0, 7200, 0, 7200, 3600 }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
finalRule { "Palestine" }
|
||||
finalRaw:int { 7200 }
|
||||
finalYear:int { 2017 }
|
||||
finalYear:int { 2020 }
|
||||
} //Z#270
|
||||
/* Asia/Ho_Chi_Minh */ :table {
|
||||
trans:intvector { -2004073600, -1851577590, -852105600, -782643600, -767869200, -718095600, -457776000, -315648000, 171820800 }
|
||||
|
|
@ -1398,9 +1388,9 @@ zoneinfo64:table(nofallback) {
|
|||
links:intvector { 271, 310, 630 }
|
||||
} //Z#271
|
||||
/* Asia/Hong_Kong */ :table {
|
||||
trans:intvector { -2056690800, -900909000, -891579600, -884248200, -766659600, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -541661400, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }
|
||||
typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 3600, 30600, 0, 32400, 0 }
|
||||
typeMap:bin { "010203040102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
trans:intvector { -2056690800, -900910800, -891579600, -884248200, -761209200, -747907200, -728541000, -717049800, -697091400, -683785800, -668061000, -654755400, -636611400, -623305800, -605161800, -591856200, -573712200, -559801800, -541657800, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 126041400, 151439400, 167167800, 182889000, 198617400, 214338600, 295385400, 309292200 }
|
||||
typeOffsets:intvector { 27402, 0, 28800, 0, 28800, 1800, 28800, 3600, 32400, 0 }
|
||||
typeMap:bin { "010302040103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301030103010301" }
|
||||
links:intvector { 272, 511 }
|
||||
} //Z#272
|
||||
/* Asia/Hovd */ :table {
|
||||
|
|
@ -1588,9 +1578,9 @@ zoneinfo64:table(nofallback) {
|
|||
typeMap:bin { "010203040302030203020302030203020302030203020302" }
|
||||
} //Z#312
|
||||
/* Asia/Seoul */ :table {
|
||||
trans:intvector { -1948782472, -1830414600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 }
|
||||
trans:intvector { -1948782472, -1830414600, -681210000, -672228000, -654771600, -640864800, -623408400, -609415200, -588848400, -577965600, -498128400, -462702600, -451733400, -429784200, -418296600, -399544200, -387451800, -368094600, -356002200, -336645000, -324552600, -305195400, -293103000, -264933000, 547578000, 560883600, 579027600, 592333200 }
|
||||
typeOffsets:intvector { 30472, 0, 30600, 0, 30600, 3600, 32400, 0, 32400, 3600 }
|
||||
typeMap:bin { "0103010201020102010201020102010304030403" }
|
||||
typeMap:bin { "01030403040304030403010201020102010201020102010304030403" }
|
||||
links:intvector { 313, 597 }
|
||||
} //Z#313
|
||||
/* Asia/Shanghai */ :table {
|
||||
|
|
@ -2093,7 +2083,7 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#445
|
||||
/* Europe/Bratislava */ :int { 477 } //Z#446
|
||||
/* Europe/Brussels */ :table {
|
||||
transPre32:intvector { -1, 1844014246 }
|
||||
transPre32:intvector { -1, 1843972096 }
|
||||
trans:intvector { -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -798073200, -781052400, -766623600, -745455600, -733273200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
|
||||
typeOffsets:intvector { 1050, 0, 0, 0, 0, 3600, 3600, 0, 3600, 3600 }
|
||||
typeMap:bin { "010304030403040301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
|
||||
|
|
@ -2170,17 +2160,17 @@ zoneinfo64:table(nofallback) {
|
|||
/* Europe/Isle_of_Man */ :int { 465 } //Z#457
|
||||
/* Europe/Istanbul */ :table {
|
||||
transPre32:intvector { -1, 1454819544 }
|
||||
trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931140000, -922762800, -917834400, -892436400, -875844000, -857358000, -781063200, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -621828000, -606970800, -590032800, -575434800, -235620000, -228279600, -177732000, -165726000, 10533600, 23835600, 41983200, 55285200, 74037600, 87339600, 107910000, 121219200, 133920000, 152676000, 165362400, 183502800, 202428000, 215557200, 228866400, 245797200, 260316000, 277246800, 308779200, 323827200, 340228800, 354672000, 371678400, 386121600, 403128000, 428446800, 433886400, 482792400, 496702800, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 }
|
||||
trans:intvector { -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931053600, -922676400, -917834400, -892436400, -875844000, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -622087200, -606970800, -590032800, -575521200, -235620000, -194842800, -177732000, -165726000, 107910000, 121215600, 133920000, 152665200, 164678400, 184114800, 196214400, 215564400, 228873600, 245804400, 260323200, 267915600, 428454000, 433893600, 468111600, 482799600, 496710000, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764118000, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301274000, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396227600, 1414285200, 1427590800, 1446944400, 1459040400, 1473195600 }
|
||||
typeOffsets:intvector { 6952, 0, 7016, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
|
||||
typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030504050405040504050403020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030405040203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" }
|
||||
links:intvector { 275, 458, 613 }
|
||||
} //Z#458
|
||||
/* Europe/Jersey */ :int { 465 } //Z#459
|
||||
/* Europe/Kaliningrad */ :table {
|
||||
transPre32:intvector { -1, 1872911176 }
|
||||
trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778730400, -762663600, -757389600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 }
|
||||
trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780372000, -778730400, -762663600, -749095200, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 909273600, 922579200, 941328000, 954028800, 972777600, 985478400, 1004227200, 1017532800, 1035676800, 1048982400, 1067126400, 1080432000, 1099180800, 1111881600, 1130630400, 1143331200, 1162080000, 1174780800, 1193529600, 1206835200, 1224979200, 1238284800, 1256428800, 1269734400, 1288483200, 1301184000, 1414278000 }
|
||||
typeOffsets:intvector { 4920, 0, 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
|
||||
typeMap:bin { "01020102010201020102010201030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
|
||||
typeMap:bin { "0102010201020102010201020102030403050605060506050605060506050605060504030403040304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
|
||||
} //Z#460
|
||||
/* Europe/Kiev */ :table {
|
||||
trans:intvector { -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 646783200, 686102400, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
|
||||
|
|
@ -2384,7 +2374,7 @@ zoneinfo64:table(nofallback) {
|
|||
/* Europe/Vatican */ :int { 479 } //Z#494
|
||||
/* Europe/Vienna */ :table {
|
||||
transPre32:intvector { -1, 1872912175 }
|
||||
trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733359600, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
|
||||
trans:intvector { -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -748479600, -733273200, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
|
||||
typeOffsets:intvector { 3921, 0, 3600, 0, 3600, 3600 }
|
||||
typeMap:bin { "010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
finalRule { "EU" }
|
||||
|
|
@ -2612,12 +2602,12 @@ zoneinfo64:table(nofallback) {
|
|||
typeMap:bin { "0102" }
|
||||
} //Z#559
|
||||
/* Pacific/Fiji */ :table {
|
||||
trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000 }
|
||||
trans:intvector { -1709985344, 909842400, 920124000, 941896800, 951573600, 1259416800, 1269698400, 1287842400, 1299333600, 1319292000, 1327154400, 1350741600, 1358604000, 1382796000, 1390050000, 1414850400, 1421503200, 1446300000, 1452952800, 1478354400, 1484402400, 1509804000, 1515852000, 1541253600, 1547301600, 1573308000 }
|
||||
typeOffsets:intvector { 42944, 0, 43200, 0, 43200, 3600 }
|
||||
typeMap:bin { "010201020102010201020102010201020102" }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102" }
|
||||
finalRule { "Fiji" }
|
||||
finalRaw:int { 43200 }
|
||||
finalYear:int { 2016 }
|
||||
finalYear:int { 2020 }
|
||||
} //Z#560
|
||||
/* Pacific/Funafuti */ :table {
|
||||
transPre32:intvector { -1, 2117471484 }
|
||||
|
|
@ -2699,9 +2689,12 @@ zoneinfo64:table(nofallback) {
|
|||
} //Z#575
|
||||
/* Pacific/Norfolk */ :table {
|
||||
transPre32:intvector { -1, 2117474184 }
|
||||
trans:intvector { -599656320, 152029800, 162912600, 1443882600 }
|
||||
typeOffsets:intvector { 40312, 0, 39600, 0, 40320, 0, 41400, 0, 41400, 3600 }
|
||||
typeMap:bin { "0203040301" }
|
||||
trans:intvector { -599656320, 152029800, 162916200, 1443882600, 1570287600, 1586012400, 1601737200 }
|
||||
typeOffsets:intvector { 40312, 0, 39600, 0, 39600, 3600, 40320, 0, 41400, 0, 41400, 3600 }
|
||||
typeMap:bin { "0304050401020102" }
|
||||
finalRule { "AN" }
|
||||
finalRaw:int { 39600 }
|
||||
finalYear:int { 2021 }
|
||||
} //Z#576
|
||||
/* Pacific/Noumea */ :table {
|
||||
trans:intvector { -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 }
|
||||
|
|
@ -3086,84 +3079,81 @@ zoneinfo64:table(nofallback) {
|
|||
AV:intvector {
|
||||
9, 1, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
|
||||
} //_#3
|
||||
Brazil:intvector {
|
||||
10, 1, -1, 0, 0, 1, 15, -1, 0, 0, 3600
|
||||
} //_#4
|
||||
C-Eur:intvector {
|
||||
2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
|
||||
} //_#5
|
||||
} //_#4
|
||||
Canada:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
} //_#6
|
||||
} //_#5
|
||||
Chatham:intvector {
|
||||
8, -30, -1, 9900, 1, 3, 1, -1, 9900, 1, 3600
|
||||
} //_#7
|
||||
} //_#6
|
||||
Chile:intvector {
|
||||
8, 2, -1, 14400, 2, 3, 2, -1, 10800, 2, 3600
|
||||
} //_#8
|
||||
} //_#7
|
||||
Cuba:intvector {
|
||||
2, 8, -1, 0, 1, 10, 1, -1, 0, 1, 3600
|
||||
} //_#9
|
||||
} //_#8
|
||||
EU:intvector {
|
||||
2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 3600
|
||||
} //_#10
|
||||
} //_#9
|
||||
EUAsia:intvector {
|
||||
2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 3600
|
||||
} //_#11
|
||||
} //_#10
|
||||
Fiji:intvector {
|
||||
10, 1, -1, 7200, 0, 0, 13, -1, 10800, 0, 3600
|
||||
} //_#12
|
||||
10, 8, -1, 7200, 0, 0, 12, -1, 10800, 0, 3600
|
||||
} //_#11
|
||||
Haiti:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
} //_#13
|
||||
} //_#12
|
||||
Iran:intvector {
|
||||
2, 20, 0, 86400, 0, 8, 20, 0, 86400, 0, 3600
|
||||
} //_#14
|
||||
} //_#13
|
||||
Jordan:intvector {
|
||||
2, -31, -5, 86400, 0, 9, -31, -6, 0, 1, 3600
|
||||
} //_#15
|
||||
} //_#14
|
||||
LH:intvector {
|
||||
9, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 1800
|
||||
} //_#16
|
||||
} //_#15
|
||||
Lebanon:intvector {
|
||||
2, -31, -1, 0, 0, 9, -31, -1, 0, 0, 3600
|
||||
} //_#17
|
||||
} //_#16
|
||||
Mexico:intvector {
|
||||
3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
|
||||
} //_#18
|
||||
} //_#17
|
||||
Moldova:intvector {
|
||||
2, -31, -1, 7200, 0, 9, -31, -1, 10800, 0, 3600
|
||||
} //_#19
|
||||
} //_#18
|
||||
NZ:intvector {
|
||||
8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
|
||||
} //_#20
|
||||
} //_#19
|
||||
Palestine:intvector {
|
||||
2, 24, -7, 3600, 0, 9, -31, -7, 3600, 0, 3600
|
||||
} //_#21
|
||||
2, -31, -6, 0, 0, 9, -31, -7, 3600, 0, 3600
|
||||
} //_#20
|
||||
Para:intvector {
|
||||
9, 1, -1, 0, 0, 2, 22, -1, 0, 0, 3600
|
||||
} //_#22
|
||||
} //_#21
|
||||
Syria:intvector {
|
||||
2, -31, -6, 0, 0, 9, -31, -6, 0, 0, 3600
|
||||
} //_#23
|
||||
} //_#22
|
||||
SystemV:intvector {
|
||||
3, -30, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
|
||||
} //_#24
|
||||
} //_#23
|
||||
Thule:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
} //_#25
|
||||
} //_#24
|
||||
Troll:intvector {
|
||||
2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 7200
|
||||
} //_#26
|
||||
} //_#25
|
||||
US:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
} //_#27
|
||||
} //_#26
|
||||
WS:intvector {
|
||||
8, -30, -1, 10800, 0, 3, 1, -1, 14400, 0, 3600
|
||||
} //_#28
|
||||
} //_#27
|
||||
Zion:intvector {
|
||||
2, 23, -6, 7200, 0, 9, -31, -1, 7200, 0, 3600
|
||||
} //_#29
|
||||
} //_#28
|
||||
}
|
||||
Regions:array {
|
||||
"AU", //Z#0 ACT
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Generated by make_intl_data.py. DO NOT EDIT.
|
||||
// tzdata version = 2019a
|
||||
// tzdata version = 2019c
|
||||
|
||||
#ifndef builtin_IntlTimeZoneData_h
|
||||
#define builtin_IntlTimeZoneData_h
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
|
||||
|
||||
// Generated by make_intl_data.py. DO NOT EDIT.
|
||||
// tzdata version = 2019a
|
||||
// tzdata version = 2019c
|
||||
|
||||
const tzMapper = [
|
||||
x => x,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
|
||||
|
||||
// Generated by make_intl_data.py. DO NOT EDIT.
|
||||
// tzdata version = 2019a
|
||||
// tzdata version = 2019c
|
||||
|
||||
const tzMapper = [
|
||||
x => x,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
|
||||
|
||||
// Generated by make_intl_data.py. DO NOT EDIT.
|
||||
// tzdata version = 2019a
|
||||
// tzdata version = 2019c
|
||||
|
||||
const tzMapper = [
|
||||
x => x,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// |reftest| skip-if(!this.hasOwnProperty("Intl"))
|
||||
|
||||
// Generated by make_intl_data.py. DO NOT EDIT.
|
||||
// tzdata version = 2019a
|
||||
// tzdata version = 2019c
|
||||
|
||||
const tzMapper = [
|
||||
x => x,
|
||||
|
|
|
|||
31
layout/base/LayoutConstants.h
Normal file
31
layout/base/LayoutConstants.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/* constants used throughout the Layout module */
|
||||
|
||||
#ifndef LayoutConstants_h___
|
||||
#define LayoutConstants_h___
|
||||
|
||||
#include "nsSize.h" // for NS_MAXSIZE
|
||||
|
||||
/**
|
||||
* Constant used to indicate an unconstrained size.
|
||||
*/
|
||||
#define NS_UNCONSTRAINEDSIZE NS_MAXSIZE
|
||||
|
||||
// NOTE: There are assumptions all over that these have the same value,
|
||||
// namely NS_UNCONSTRAINEDSIZE.
|
||||
#define NS_INTRINSICSIZE NS_UNCONSTRAINEDSIZE
|
||||
#define NS_AUTOHEIGHT NS_UNCONSTRAINEDSIZE
|
||||
#define NS_AUTOOFFSET NS_UNCONSTRAINEDSIZE
|
||||
|
||||
// +1 is to avoid clamped huge margin values being processed as auto margins
|
||||
#define NS_AUTOMARGIN (NS_UNCONSTRAINEDSIZE + 1)
|
||||
|
||||
#define NS_INTRINSIC_WIDTH_UNKNOWN nscoord_MIN
|
||||
|
||||
|
||||
#endif // LayoutConstants_h___
|
||||
|
|
@ -13,6 +13,9 @@ with Files('Display*'):
|
|||
with Files('FrameLayerBuilder.*'):
|
||||
BUG_COMPONENT = ('Core', 'Layout: View Rendering')
|
||||
|
||||
with Files('LayoutConstants.*'):
|
||||
BUG_COMPONENT = ('Core', 'Layout: View Rendering')
|
||||
|
||||
with Files('LayerState.*'):
|
||||
BUG_COMPONENT = ('Core', 'Layout: View Rendering')
|
||||
|
||||
|
|
@ -63,6 +66,7 @@ EXPORTS += [
|
|||
'FrameLayerBuilder.h',
|
||||
'FrameProperties.h',
|
||||
'LayerState.h',
|
||||
'LayoutConstants.h',
|
||||
'LayoutLogging.h',
|
||||
'nsArenaMemoryStats.h',
|
||||
'nsBidi.h',
|
||||
|
|
|
|||
|
|
@ -4671,8 +4671,6 @@ GetDefiniteSize(const nsStyleCoord& aStyle,
|
|||
nscoord pb = aIsInlineAxis ? aPercentageBasis.value().ISize(wm)
|
||||
: aPercentageBasis.value().BSize(wm);
|
||||
if (pb == NS_UNCONSTRAINEDSIZE) {
|
||||
// XXXmats given that we're calculating an intrinsic size here,
|
||||
// maybe we should back-compute the calc-size using AddPercents?
|
||||
return false;
|
||||
}
|
||||
*aResult = std::max(0, calc->mLength +
|
||||
|
|
@ -4916,12 +4914,9 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
|||
nscoord result = aContentSize;
|
||||
nscoord min = aContentMinSize;
|
||||
nscoord coordOutsideSize = 0;
|
||||
float pctOutsideSize = 0;
|
||||
float pctTotal = 0.0f;
|
||||
|
||||
if (!(aFlags & nsLayoutUtils::IGNORE_PADDING)) {
|
||||
coordOutsideSize += aOffsets.hPadding;
|
||||
pctOutsideSize += aOffsets.hPctPadding;
|
||||
}
|
||||
|
||||
coordOutsideSize += aOffsets.hBorder;
|
||||
|
|
@ -4929,21 +4924,15 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
|||
if (aBoxSizing == StyleBoxSizing::Border) {
|
||||
min += coordOutsideSize;
|
||||
result = NSCoordSaturatingAdd(result, coordOutsideSize);
|
||||
pctTotal += pctOutsideSize;
|
||||
|
||||
coordOutsideSize = 0;
|
||||
pctOutsideSize = 0.0f;
|
||||
}
|
||||
|
||||
coordOutsideSize += aOffsets.hMargin;
|
||||
pctOutsideSize += aOffsets.hPctMargin;
|
||||
|
||||
min += coordOutsideSize;
|
||||
result = NSCoordSaturatingAdd(result, coordOutsideSize);
|
||||
pctTotal += pctOutsideSize;
|
||||
|
||||
const bool shouldAddPercent = aType == nsLayoutUtils::PREF_ISIZE ||
|
||||
(aFlags & nsLayoutUtils::ADD_PERCENTS);
|
||||
nscoord size;
|
||||
if (aType == nsLayoutUtils::MIN_ISIZE &&
|
||||
(((aStyleSize.HasPercent() || aStyleMaxSize.HasPercent()) &&
|
||||
|
|
@ -4961,18 +4950,6 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
|||
GetIntrinsicCoord(aStyleSize, aRenderingContext, aFrame,
|
||||
PROP_WIDTH, size)) {
|
||||
result = size + coordOutsideSize;
|
||||
if (shouldAddPercent) {
|
||||
result = nsLayoutUtils::AddPercents(result, pctOutsideSize);
|
||||
}
|
||||
} else {
|
||||
// NOTE: We could really do a lot better for percents and for some
|
||||
// cases of calc() containing percent (certainly including any where
|
||||
// the coefficient on the percent is positive and there are no max()
|
||||
// expressions). However, doing better for percents wouldn't be
|
||||
// backwards compatible.
|
||||
if (shouldAddPercent) {
|
||||
result = nsLayoutUtils::AddPercents(result, pctTotal);
|
||||
}
|
||||
}
|
||||
|
||||
nscoord maxSize = aFixedMaxSize ? *aFixedMaxSize : 0;
|
||||
|
|
@ -4980,9 +4957,6 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
|||
GetIntrinsicCoord(aStyleMaxSize, aRenderingContext, aFrame,
|
||||
PROP_MAX_WIDTH, maxSize)) {
|
||||
maxSize += coordOutsideSize;
|
||||
if (shouldAddPercent) {
|
||||
maxSize = nsLayoutUtils::AddPercents(maxSize, pctOutsideSize);
|
||||
}
|
||||
if (result > maxSize) {
|
||||
result = maxSize;
|
||||
}
|
||||
|
|
@ -4993,17 +4967,11 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
|||
GetIntrinsicCoord(aStyleMinSize, aRenderingContext, aFrame,
|
||||
PROP_MIN_WIDTH, minSize)) {
|
||||
minSize += coordOutsideSize;
|
||||
if (shouldAddPercent) {
|
||||
minSize = nsLayoutUtils::AddPercents(minSize, pctOutsideSize);
|
||||
}
|
||||
if (result < minSize) {
|
||||
result = minSize;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldAddPercent) {
|
||||
min = nsLayoutUtils::AddPercents(min, pctTotal);
|
||||
}
|
||||
if (result < min) {
|
||||
result = min;
|
||||
}
|
||||
|
|
@ -5020,9 +4988,6 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
|||
: devSize.width);
|
||||
// GetMinimumWidgetSize() returns a border-box width.
|
||||
themeSize += aOffsets.hMargin;
|
||||
if (shouldAddPercent) {
|
||||
themeSize = nsLayoutUtils::AddPercents(themeSize, aOffsets.hPctMargin);
|
||||
}
|
||||
if (themeSize > result || !canOverride) {
|
||||
result = themeSize;
|
||||
}
|
||||
|
|
@ -5267,9 +5232,19 @@ nsLayoutUtils::IntrinsicForAxis(PhysicalAxis aAxis,
|
|||
min = aFrame->GetMinISize(aRenderingContext);
|
||||
}
|
||||
|
||||
nscoord pmPercentageBasis = NS_UNCONSTRAINEDSIZE;
|
||||
if (aPercentageBasis.isSome()) {
|
||||
// The padding/margin percentage basis is the inline-size in the parent's
|
||||
// writing-mode.
|
||||
auto childWM = aFrame->GetWritingMode();
|
||||
pmPercentageBasis =
|
||||
aFrame->GetParent()->GetWritingMode().IsOrthogonalTo(childWM) ?
|
||||
aPercentageBasis->BSize(childWM) :
|
||||
aPercentageBasis->ISize(childWM);
|
||||
}
|
||||
nsIFrame::IntrinsicISizeOffsetData offsets =
|
||||
MOZ_LIKELY(isInlineAxis) ? aFrame->IntrinsicISizeOffsets()
|
||||
: aFrame->IntrinsicBSizeOffsets();
|
||||
MOZ_LIKELY(isInlineAxis) ? aFrame->IntrinsicISizeOffsets(pmPercentageBasis)
|
||||
: aFrame->IntrinsicBSizeOffsets(pmPercentageBasis);
|
||||
nscoord contentBoxSize = result;
|
||||
result = AddIntrinsicSizeOffset(aRenderingContext, aFrame, offsets, aType,
|
||||
boxSizing, result, min, styleISize,
|
||||
|
|
@ -5310,11 +5285,12 @@ nsLayoutUtils::IntrinsicForContainer(nsRenderingContext* aRenderingContext,
|
|||
}
|
||||
|
||||
/* static */ nscoord
|
||||
nsLayoutUtils::MinSizeContributionForAxis(PhysicalAxis aAxis,
|
||||
nsLayoutUtils::MinSizeContributionForAxis(PhysicalAxis aAxis,
|
||||
nsRenderingContext* aRC,
|
||||
nsIFrame* aFrame,
|
||||
IntrinsicISizeType aType,
|
||||
uint32_t aFlags)
|
||||
nsIFrame* aFrame,
|
||||
IntrinsicISizeType aType,
|
||||
const LogicalSize& aPercentageBasis,
|
||||
uint32_t aFlags)
|
||||
{
|
||||
MOZ_ASSERT(aFrame);
|
||||
MOZ_ASSERT(aFrame->IsFlexOrGridItem(),
|
||||
|
|
@ -5328,9 +5304,7 @@ nsLayoutUtils::MinSizeContributionForAxis(PhysicalAxis aAxis,
|
|||
aWM.IsVertical() ? "vertical" : "horizontal");
|
||||
#endif
|
||||
|
||||
// Note: this method is only meant for grid/flex items which always
|
||||
// include percentages in their intrinsic size.
|
||||
aFlags |= nsLayoutUtils::ADD_PERCENTS;
|
||||
// Note: this method is only meant for grid/flex items.
|
||||
const nsStylePosition* const stylePos = aFrame->StylePosition();
|
||||
const nsStyleCoord* style = aAxis == eAxisHorizontal ? &stylePos->mMinWidth
|
||||
: &stylePos->mMinHeight;
|
||||
|
|
@ -5375,11 +5349,17 @@ nsLayoutUtils::MinSizeContributionForAxis(PhysicalAxis aAxis,
|
|||
// wrapping inside of it should not apply font size inflation.
|
||||
AutoMaybeDisableFontInflation an(aFrame);
|
||||
|
||||
PhysicalAxis ourInlineAxis =
|
||||
aFrame->GetWritingMode().PhysicalAxis(eLogicalAxisInline);
|
||||
// The padding/margin percentage basis is the inline-size in the parent's
|
||||
// writing-mode.
|
||||
auto childWM = aFrame->GetWritingMode();
|
||||
nscoord pmPercentageBasis =
|
||||
aFrame->GetParent()->GetWritingMode().IsOrthogonalTo(childWM) ?
|
||||
aPercentageBasis.BSize(childWM) :
|
||||
aPercentageBasis.ISize(childWM);
|
||||
PhysicalAxis ourInlineAxis = childWM.PhysicalAxis(eLogicalAxisInline);
|
||||
nsIFrame::IntrinsicISizeOffsetData offsets =
|
||||
ourInlineAxis == aAxis ? aFrame->IntrinsicISizeOffsets()
|
||||
: aFrame->IntrinsicBSizeOffsets();
|
||||
ourInlineAxis == aAxis ? aFrame->IntrinsicISizeOffsets(pmPercentageBasis)
|
||||
: aFrame->IntrinsicBSizeOffsets(pmPercentageBasis);
|
||||
nscoord result = 0;
|
||||
nscoord min = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#ifndef nsLayoutUtils_h__
|
||||
#define nsLayoutUtils_h__
|
||||
|
||||
#include "LayoutConstants.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/ArrayUtils.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
|
|
@ -154,6 +155,7 @@ public:
|
|||
typedef mozilla::ScreenMargin ScreenMargin;
|
||||
typedef mozilla::LayoutDeviceIntSize LayoutDeviceIntSize;
|
||||
typedef mozilla::StyleGeometryBox StyleGeometryBox;
|
||||
typedef mozilla::LogicalSize LogicalSize;
|
||||
|
||||
/**
|
||||
* Finds previously assigned ViewID for the given content element, if any.
|
||||
|
|
@ -1381,7 +1383,8 @@ public:
|
|||
* variations if that's what matches aAxis) and its padding, border and margin
|
||||
* in the corresponding dimension.
|
||||
* @param aPercentageBasis an optional percentage basis (in aFrame's WM).
|
||||
* Pass NS_UNCONSTRAINEDSIZE if the basis is indefinite in either/both axes.
|
||||
* If the basis is indefinite in a given axis, pass a size with
|
||||
* NS_UNCONSTRAINEDSIZE in that component.
|
||||
* If you pass Nothing() a percentage basis will be calculated from aFrame's
|
||||
* ancestors' computed size in the relevant axis, if needed.
|
||||
* @param aMarginBoxMinSizeClamp make the result fit within this margin-box
|
||||
|
|
@ -1395,14 +1398,13 @@ public:
|
|||
IGNORE_PADDING = 0x01,
|
||||
BAIL_IF_REFLOW_NEEDED = 0x02, // returns NS_INTRINSIC_WIDTH_UNKNOWN if so
|
||||
MIN_INTRINSIC_ISIZE = 0x04, // use min-width/height instead of width/height
|
||||
ADD_PERCENTS = 0x08, // apply AddPercents also for MIN_ISIZE
|
||||
};
|
||||
static nscoord
|
||||
IntrinsicForAxis(mozilla::PhysicalAxis aAxis,
|
||||
nsRenderingContext* aRenderingContext,
|
||||
nsIFrame* aFrame,
|
||||
IntrinsicISizeType aType,
|
||||
const mozilla::Maybe<mozilla::LogicalSize>& aPercentageBasis = mozilla::Nothing(),
|
||||
const mozilla::Maybe<LogicalSize>& aPercentageBasis = mozilla::Nothing(),
|
||||
uint32_t aFlags = 0,
|
||||
nscoord aMarginBoxMinSizeClamp = NS_MAXSIZE);
|
||||
/**
|
||||
|
|
@ -1427,31 +1429,18 @@ public:
|
|||
* calculates the result as if the 'min-' computed value is zero.
|
||||
* Otherwise, return NS_UNCONSTRAINEDSIZE.
|
||||
*
|
||||
* @param aPercentageBasis the percentage basis (in aFrame's WM).
|
||||
* Pass NS_UNCONSTRAINEDSIZE if the basis is indefinite in either/both axes.
|
||||
* @note this behavior is specific to Grid/Flexbox (currently) so aFrame
|
||||
* should be a grid/flex item.
|
||||
*/
|
||||
static nscoord MinSizeContributionForAxis(mozilla::PhysicalAxis aAxis,
|
||||
nsRenderingContext* aRC,
|
||||
nsIFrame* aFrame,
|
||||
IntrinsicISizeType aType,
|
||||
uint32_t aFlags = 0);
|
||||
|
||||
/**
|
||||
* This function increases an initial intrinsic size, 'aCurrent', according
|
||||
* to the given 'aPercent', such that the size-increase makes up exactly
|
||||
* 'aPercent' percent of the returned value. If 'aPercent' or 'aCurrent' are
|
||||
* less than or equal to zero the original 'aCurrent' value is returned.
|
||||
* If 'aPercent' is greater than or equal to 1.0 the value nscoord_MAX is
|
||||
* returned.
|
||||
*/
|
||||
static nscoord AddPercents(nscoord aCurrent, float aPercent)
|
||||
{
|
||||
if (aPercent > 0.0f && aCurrent > 0) {
|
||||
return MOZ_UNLIKELY(aPercent >= 1.0f) ? nscoord_MAX
|
||||
: NSToCoordRound(float(aCurrent) / (1.0f - aPercent));
|
||||
}
|
||||
return aCurrent;
|
||||
}
|
||||
static nscoord
|
||||
MinSizeContributionForAxis(mozilla::PhysicalAxis aAxis,
|
||||
nsRenderingContext* aRC,
|
||||
nsIFrame* aFrame,
|
||||
IntrinsicISizeType aType,
|
||||
const LogicalSize& aPercentageBasis,
|
||||
uint32_t aFlags = 0);
|
||||
|
||||
/*
|
||||
* Convert nsStyleCoord to nscoord when percentages depend on the
|
||||
|
|
@ -2876,6 +2865,62 @@ public:
|
|||
static nsRect ComputeGeometryBox(nsIFrame* aFrame,
|
||||
StyleGeometryBox aGeometryBox);
|
||||
|
||||
/**
|
||||
* Resolve a CSS <length-percentage> value to a definite size.
|
||||
*/
|
||||
template<bool clampNegativeResultToZero>
|
||||
static nscoord ResolveToLength(const nsStyleCoord& aCoord,
|
||||
nscoord aPercentageBasis)
|
||||
{
|
||||
NS_WARNING_ASSERTION(aPercentageBasis >= nscoord(0), "nscoord overflow?");
|
||||
|
||||
switch (aCoord.GetUnit()) {
|
||||
case eStyleUnit_Coord:
|
||||
MOZ_ASSERT(!clampNegativeResultToZero || aCoord.GetCoordValue() >= 0,
|
||||
"This value should have been rejected by the style system");
|
||||
return aCoord.GetCoordValue();
|
||||
case eStyleUnit_Percent:
|
||||
if (aPercentageBasis == NS_UNCONSTRAINEDSIZE) {
|
||||
return nscoord(0);
|
||||
}
|
||||
MOZ_ASSERT(!clampNegativeResultToZero || aCoord.GetPercentValue() >= 0,
|
||||
"This value should have been rejected by the style system");
|
||||
return NSToCoordFloorClamped(aPercentageBasis *
|
||||
aCoord.GetPercentValue());
|
||||
case eStyleUnit_Calc: {
|
||||
nsStyleCoord::Calc* calc = aCoord.GetCalcValue();
|
||||
nscoord result;
|
||||
if (aPercentageBasis == NS_UNCONSTRAINEDSIZE) {
|
||||
result = calc->mLength;
|
||||
} else {
|
||||
result = calc->mLength +
|
||||
NSToCoordFloorClamped(aPercentageBasis * calc->mPercent);
|
||||
}
|
||||
if (clampNegativeResultToZero && result < 0) {
|
||||
return nscoord(0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
default:
|
||||
MOZ_ASSERT_UNREACHABLE("Unexpected unit!");
|
||||
return nscoord(0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve a column-gap/row-gap to a definite size.
|
||||
* @note This method resolves 'normal' to zero.
|
||||
* Callers who want different behavior should handle 'normal' on their own.
|
||||
*/
|
||||
static nscoord ResolveGapToLength(const nsStyleCoord& aGap,
|
||||
nscoord aPercentageBasis)
|
||||
{
|
||||
if (aGap.GetUnit() == eStyleUnit_Normal) {
|
||||
return nscoord(0);
|
||||
}
|
||||
return ResolveToLength<true>(aGap, aPercentageBasis);
|
||||
}
|
||||
|
||||
private:
|
||||
static uint32_t sFontSizeInflationEmPerLine;
|
||||
static uint32_t sFontSizeInflationMinTwips;
|
||||
|
|
|
|||
|
|
@ -183,18 +183,15 @@ nsColumnSetFrame::GetAvailableContentBSize(const ReflowInput& aReflowInput)
|
|||
|
||||
static nscoord
|
||||
GetColumnGap(nsColumnSetFrame* aFrame,
|
||||
const nsStyleColumn* aColStyle)
|
||||
const nsStyleColumn* aColStyle,
|
||||
nscoord aPercentageBasis)
|
||||
{
|
||||
if (eStyleUnit_Normal == aColStyle->mColumnGap.GetUnit())
|
||||
const auto& columnGap = aColStyle->mColumnGap;
|
||||
if (columnGap.GetUnit() == eStyleUnit_Normal) {
|
||||
return aFrame->StyleFont()->mFont.size;
|
||||
if (eStyleUnit_Coord == aColStyle->mColumnGap.GetUnit()) {
|
||||
nscoord colGap = aColStyle->mColumnGap.GetCoordValue();
|
||||
NS_ASSERTION(colGap >= 0, "negative column gap");
|
||||
return colGap;
|
||||
}
|
||||
|
||||
NS_NOTREACHED("Unknown gap type");
|
||||
return 0;
|
||||
return nsLayoutUtils::ResolveGapToLength(columnGap, aPercentageBasis);
|
||||
}
|
||||
|
||||
nsColumnSetFrame::ReflowConfig
|
||||
|
|
@ -227,7 +224,7 @@ nsColumnSetFrame::ChooseColumnStrategy(const ReflowInput& aReflowInput,
|
|||
colBSize = std::min(colBSize, aReflowInput.ComputedMaxBSize());
|
||||
}
|
||||
|
||||
nscoord colGap = GetColumnGap(this, colStyle);
|
||||
nscoord colGap = GetColumnGap(this, colStyle, aReflowInput.ComputedISize());
|
||||
int32_t numColumns = colStyle->mColumnCount;
|
||||
|
||||
// If column-fill is set to 'balance', then we want to balance the columns.
|
||||
|
|
@ -403,7 +400,7 @@ nsColumnSetFrame::GetMinISize(nsRenderingContext *aRenderingContext)
|
|||
// include n-1 column gaps.
|
||||
colISize = iSize;
|
||||
iSize *= colStyle->mColumnCount;
|
||||
nscoord colGap = GetColumnGap(this, colStyle);
|
||||
nscoord colGap = GetColumnGap(this, colStyle, NS_UNCONSTRAINEDSIZE);
|
||||
iSize += colGap * (colStyle->mColumnCount - 1);
|
||||
// The multiplication above can make 'width' negative (integer overflow),
|
||||
// so use std::max to protect against that.
|
||||
|
|
@ -424,7 +421,7 @@ nsColumnSetFrame::GetPrefISize(nsRenderingContext *aRenderingContext)
|
|||
nscoord result = 0;
|
||||
DISPLAY_PREF_WIDTH(this, result);
|
||||
const nsStyleColumn* colStyle = StyleColumn();
|
||||
nscoord colGap = GetColumnGap(this, colStyle);
|
||||
nscoord colGap = GetColumnGap(this, colStyle, NS_UNCONSTRAINEDSIZE);
|
||||
|
||||
nscoord colISize;
|
||||
if (colStyle->mColumnWidth.GetUnit() == eStyleUnit_Coord) {
|
||||
|
|
|
|||
|
|
@ -4515,68 +4515,44 @@ nsIFrame::InlinePrefISizeData::ForceBreak()
|
|||
mSkipWhitespace = true;
|
||||
}
|
||||
|
||||
static void
|
||||
AddCoord(const nsStyleCoord& aStyle,
|
||||
nsIFrame* aFrame,
|
||||
nscoord* aCoord, float* aPercent,
|
||||
bool aClampNegativeToZero)
|
||||
static nscoord
|
||||
ResolveMargin(const nsStyleCoord& aStyle, nscoord aPercentageBasis)
|
||||
{
|
||||
switch (aStyle.GetUnit()) {
|
||||
case eStyleUnit_Coord: {
|
||||
NS_ASSERTION(!aClampNegativeToZero || aStyle.GetCoordValue() >= 0,
|
||||
"unexpected negative value");
|
||||
*aCoord += aStyle.GetCoordValue();
|
||||
return;
|
||||
}
|
||||
case eStyleUnit_Percent: {
|
||||
NS_ASSERTION(!aClampNegativeToZero || aStyle.GetPercentValue() >= 0.0f,
|
||||
"unexpected negative value");
|
||||
*aPercent += aStyle.GetPercentValue();
|
||||
return;
|
||||
}
|
||||
case eStyleUnit_Calc: {
|
||||
const nsStyleCoord::Calc *calc = aStyle.GetCalcValue();
|
||||
if (aClampNegativeToZero) {
|
||||
// This is far from ideal when one is negative and one is positive.
|
||||
*aCoord += std::max(calc->mLength, 0);
|
||||
*aPercent += std::max(calc->mPercent, 0.0f);
|
||||
} else {
|
||||
*aCoord += calc->mLength;
|
||||
*aPercent += calc->mPercent;
|
||||
}
|
||||
return;
|
||||
}
|
||||
default: {
|
||||
return;
|
||||
}
|
||||
if (aStyle.GetUnit() == eStyleUnit_Auto) {
|
||||
return nscoord(0);
|
||||
}
|
||||
return nsLayoutUtils::ResolveToLength<false>(aStyle, aPercentageBasis);
|
||||
}
|
||||
|
||||
static nscoord
|
||||
ResolvePadding(const nsStyleCoord& aStyle, nscoord aPercentageBasis)
|
||||
{
|
||||
return nsLayoutUtils::ResolveToLength<true>(aStyle, aPercentageBasis);
|
||||
}
|
||||
|
||||
static nsIFrame::IntrinsicISizeOffsetData
|
||||
IntrinsicSizeOffsets(nsIFrame* aFrame, bool aForISize)
|
||||
IntrinsicSizeOffsets(nsIFrame* aFrame, nscoord aPercentageBasis, bool aForISize)
|
||||
{
|
||||
nsIFrame::IntrinsicISizeOffsetData result;
|
||||
WritingMode wm = aFrame->GetWritingMode();
|
||||
const nsStyleMargin* styleMargin = aFrame->StyleMargin();
|
||||
const auto& margin = aFrame->StyleMargin()->mMargin;
|
||||
bool verticalAxis = aForISize == wm.IsVertical();
|
||||
AddCoord(verticalAxis ? styleMargin->mMargin.GetTop()
|
||||
: styleMargin->mMargin.GetLeft(),
|
||||
aFrame, &result.hMargin, &result.hPctMargin,
|
||||
false);
|
||||
AddCoord(verticalAxis ? styleMargin->mMargin.GetBottom()
|
||||
: styleMargin->mMargin.GetRight(),
|
||||
aFrame, &result.hMargin, &result.hPctMargin,
|
||||
false);
|
||||
if (verticalAxis) {
|
||||
result.hMargin += ResolveMargin(margin.GetTop(), aPercentageBasis);
|
||||
result.hMargin += ResolveMargin(margin.GetBottom(), aPercentageBasis);
|
||||
} else {
|
||||
result.hMargin += ResolveMargin(margin.GetLeft(), aPercentageBasis);
|
||||
result.hMargin += ResolveMargin(margin.GetRight(), aPercentageBasis);
|
||||
}
|
||||
|
||||
const nsStylePadding* stylePadding = aFrame->StylePadding();
|
||||
AddCoord(verticalAxis ? stylePadding->mPadding.GetTop()
|
||||
: stylePadding->mPadding.GetLeft(),
|
||||
aFrame, &result.hPadding, &result.hPctPadding,
|
||||
true);
|
||||
AddCoord(verticalAxis ? stylePadding->mPadding.GetBottom()
|
||||
: stylePadding->mPadding.GetRight(),
|
||||
aFrame, &result.hPadding, &result.hPctPadding,
|
||||
true);
|
||||
const auto& padding = aFrame->StylePadding()->mPadding;
|
||||
if (verticalAxis) {
|
||||
result.hPadding += ResolvePadding(padding.GetTop(), aPercentageBasis);
|
||||
result.hPadding += ResolvePadding(padding.GetBottom(), aPercentageBasis);
|
||||
} else {
|
||||
result.hPadding += ResolvePadding(padding.GetLeft(), aPercentageBasis);
|
||||
result.hPadding += ResolvePadding(padding.GetRight(), aPercentageBasis);
|
||||
}
|
||||
|
||||
const nsStyleBorder* styleBorder = aFrame->StyleBorder();
|
||||
if (verticalAxis) {
|
||||
|
|
@ -4606,22 +4582,21 @@ IntrinsicSizeOffsets(nsIFrame* aFrame, bool aForISize)
|
|||
result.hPadding =
|
||||
presContext->DevPixelsToAppUnits(verticalAxis ? padding.TopBottom()
|
||||
: padding.LeftRight());
|
||||
result.hPctPadding = 0;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/* virtual */ nsIFrame::IntrinsicISizeOffsetData
|
||||
nsFrame::IntrinsicISizeOffsets()
|
||||
nsFrame::IntrinsicISizeOffsets(nscoord aPercentageBasis)
|
||||
{
|
||||
return IntrinsicSizeOffsets(this, true);
|
||||
return IntrinsicSizeOffsets(this, aPercentageBasis, true);
|
||||
}
|
||||
|
||||
nsIFrame::IntrinsicISizeOffsetData
|
||||
nsIFrame::IntrinsicBSizeOffsets()
|
||||
nsIFrame::IntrinsicBSizeOffsets(nscoord aPercentageBasis)
|
||||
{
|
||||
return IntrinsicSizeOffsets(this, false);
|
||||
return IntrinsicSizeOffsets(this, aPercentageBasis, false);
|
||||
}
|
||||
|
||||
/* virtual */ IntrinsicSize
|
||||
|
|
|
|||
|
|
@ -261,7 +261,8 @@ public:
|
|||
InlineMinISizeData *aData) override;
|
||||
virtual void AddInlinePrefISize(nsRenderingContext *aRenderingContext,
|
||||
InlinePrefISizeData *aData) override;
|
||||
virtual IntrinsicISizeOffsetData IntrinsicISizeOffsets() override;
|
||||
IntrinsicISizeOffsetData
|
||||
IntrinsicISizeOffsets(nscoord aPercentageBasis = NS_UNCONSTRAINEDSIZE) override;
|
||||
virtual mozilla::IntrinsicSize GetIntrinsicSize() override;
|
||||
virtual nsSize GetIntrinsicRatio() override;
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "CaretAssociationHint.h"
|
||||
#include "FrameProperties.h"
|
||||
#include "LayoutConstants.h"
|
||||
#include "mozilla/layout/FrameChildList.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "mozilla/WritingModes.h"
|
||||
|
|
@ -130,30 +131,12 @@ typedef uint32_t nsSplittableType;
|
|||
#define NS_FRAME_IS_NOT_SPLITTABLE(type)\
|
||||
(0 == ((type) & NS_FRAME_SPLITTABLE))
|
||||
|
||||
#define NS_INTRINSIC_WIDTH_UNKNOWN nscoord_MIN
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#define NS_SUBTREE_DIRTY(_frame) \
|
||||
(((_frame)->GetStateBits() & \
|
||||
(NS_FRAME_IS_DIRTY | NS_FRAME_HAS_DIRTY_CHILDREN)) != 0)
|
||||
|
||||
/**
|
||||
* Constant used to indicate an unconstrained size.
|
||||
*
|
||||
* @see #Reflow()
|
||||
*/
|
||||
#define NS_UNCONSTRAINEDSIZE NS_MAXSIZE
|
||||
|
||||
#define NS_INTRINSICSIZE NS_UNCONSTRAINEDSIZE
|
||||
#define NS_AUTOHEIGHT NS_UNCONSTRAINEDSIZE
|
||||
// +1 is to avoid clamped huge margin values being processed as auto margins
|
||||
#define NS_AUTOMARGIN (NS_UNCONSTRAINEDSIZE + 1)
|
||||
#define NS_AUTOOFFSET NS_UNCONSTRAINEDSIZE
|
||||
// NOTE: there are assumptions all over that these have the same value, namely NS_UNCONSTRAINEDSIZE
|
||||
// if any are changed to be a value other than NS_UNCONSTRAINEDSIZE
|
||||
// at least update AdjustComputedHeight/Width and test ad nauseum
|
||||
|
||||
// 1 million CSS pixels less than our max app unit measure.
|
||||
// For reflowing with an "infinite" available inline space per [css-sizing].
|
||||
// (reflowing with an NS_UNCONSTRAINEDSIZE available inline size isn't allowed
|
||||
|
|
@ -2050,23 +2033,27 @@ public:
|
|||
/**
|
||||
* Return the horizontal components of padding, border, and margin
|
||||
* that contribute to the intrinsic width that applies to the parent.
|
||||
* @param aPercentageBasis the percentage basis to use for padding/margin -
|
||||
* i.e. the Containing Block's inline-size
|
||||
*/
|
||||
struct IntrinsicISizeOffsetData {
|
||||
nscoord hPadding, hBorder, hMargin;
|
||||
float hPctPadding, hPctMargin;
|
||||
|
||||
IntrinsicISizeOffsetData()
|
||||
: hPadding(0), hBorder(0), hMargin(0)
|
||||
, hPctPadding(0.0f), hPctMargin(0.0f)
|
||||
{}
|
||||
};
|
||||
virtual IntrinsicISizeOffsetData IntrinsicISizeOffsets() = 0;
|
||||
virtual IntrinsicISizeOffsetData
|
||||
IntrinsicISizeOffsets(nscoord aPercentageBasis = NS_UNCONSTRAINEDSIZE) = 0;
|
||||
|
||||
/**
|
||||
* Return the bsize components of padding, border, and margin
|
||||
* that contribute to the intrinsic width that applies to the parent.
|
||||
* @param aPercentageBasis the percentage basis to use for padding/margin -
|
||||
* i.e. the Containing Block's inline-size
|
||||
*/
|
||||
IntrinsicISizeOffsetData IntrinsicBSizeOffsets();
|
||||
IntrinsicISizeOffsetData
|
||||
IntrinsicBSizeOffsets(nscoord aPercentageBasis = NS_UNCONSTRAINEDSIZE);
|
||||
|
||||
virtual mozilla::IntrinsicSize GetIntrinsicSize() = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -138,3 +138,7 @@ support-files = file_taintedfilters_feDisplacementMap-tainted-1.svg file_tainted
|
|||
support-files = file_scroll_position_restore.html
|
||||
[test_scroll_animation_restore.html]
|
||||
[test_scroll_position_iframe.html]
|
||||
[test_grid_track_sizing_algo_001.html]
|
||||
skip-if = debug == true # the test is slow
|
||||
[test_grid_track_sizing_algo_002.html]
|
||||
skip-if = debug == true # the test is slow
|
||||
|
|
|
|||
1641
layout/generic/test/test_grid_track_sizing_algo_001.html
Normal file
1641
layout/generic/test/test_grid_track_sizing_algo_001.html
Normal file
File diff suppressed because it is too large
Load diff
1641
layout/generic/test/test_grid_track_sizing_algo_002.html
Normal file
1641
layout/generic/test/test_grid_track_sizing_algo_002.html
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -17,7 +17,7 @@ table {
|
|||
<body>
|
||||
<table>
|
||||
<tbody><tr>
|
||||
<td colspan="2" style="width: 100%;"><div> </div></td>
|
||||
<td colspan="2"><div> </div></td>
|
||||
<td>b</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -65,32 +65,49 @@ b40 {
|
|||
.h.r {
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
/* This margin-left is 20% of 98px-wide grid area */
|
||||
margin-left: 19.6px;
|
||||
/* This padding-bottom is 10% of 98px wide grid area */
|
||||
/* This padding-left is 30% of 98px wide grid area */
|
||||
padding: 1px 3px 9.8px 29.4px;
|
||||
/* 49px is the percentage basis, i.e. the column size */
|
||||
margin-left: calc(0.2 * 49px);
|
||||
padding: 1px 3px calc(0.1 * 49px) calc(0.3 * 49px);
|
||||
}
|
||||
.v.r {
|
||||
height: 42px;
|
||||
width: 42px;
|
||||
/* This margin-left is 20% of 54px-wide grid area */
|
||||
margin-left: 10.8px;
|
||||
/* This padding-bottom is 10% of 54px wide grid area */
|
||||
/* This padding-left is 30% of 54px wide grid area */
|
||||
padding: 1px 3px 5.4px 16.2px;
|
||||
/* 27px is the percentage basis, i.e. the column size */
|
||||
margin-left: calc(0.2 * 27px);
|
||||
padding: 1px 3px calc(0.1 * 27px) calc(0.3 * 27px);
|
||||
}
|
||||
|
||||
.r { position:relative; }
|
||||
|
||||
.t4 { width: 49px;
|
||||
height: calc(10px /* item min-height */ +
|
||||
7px /* item margin-top */ +
|
||||
1px /* item padding-top */ +
|
||||
1px /* item border-top */ +
|
||||
calc(0.5 * 49px) /* item margin-bottom */ +
|
||||
calc(0.1 * 49px) /* item padding-bottom */);
|
||||
}
|
||||
|
||||
.t6 { width:46px; }
|
||||
.t8 { width:118px; height: 102.5px; }
|
||||
.t8 { width: 27px;
|
||||
height: calc(30px /* item min-height */ +
|
||||
7px /* item margin-top */ +
|
||||
3px /* item padding-top */ +
|
||||
1px /* item border-top */ +
|
||||
calc(0.5 * 27px) /* item margin-bottom */ +
|
||||
calc(0.1 * 27px) /* item padding-bottom */);
|
||||
}
|
||||
|
||||
xx {
|
||||
display: block;
|
||||
background: lime;
|
||||
padding:32px 32px 16px 32px;
|
||||
margin: 0 0 32px 16px;
|
||||
padding: 32px 32px calc(0.2 * 32px) calc(0.4 * 32px);
|
||||
margin: 0 0 calc(0.4 * 32px) calc(0.2 * 32px);
|
||||
}
|
||||
.t9, .t10 {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
grid: calc(32px + calc(0.4 * 32px) + calc(0.2 * 32px)) 0 / 32px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -100,15 +117,15 @@ xx {
|
|||
<div class="grid"><span class="h"><x></x></span></div>
|
||||
<div class="grid"><span class="h bb"><x></x></span></div>
|
||||
<div class="grid"><span class="h"><x></x></span><span class="h"><x></x></span></div>
|
||||
<div class="grid" style="grid:48px / 122px"><span class="h r"><b40></b40></span></div>
|
||||
<div class="grid t4"><span class="h r"><b40></b40></span></div>
|
||||
<br>
|
||||
<div class="grid"><span class="v"><x></x></span></div>
|
||||
<div class="grid t6"><span class="v bb"><x></x></span></div>
|
||||
<div class="grid"><span class="v bb"><x></x></span></div>
|
||||
<div class="grid"><span class="v"><x></x></span><span class="v"><x></x></span></div>
|
||||
<div class="grid t8"><span class="v r"><b40></b40></span></div>
|
||||
|
||||
<div class="grid"><xx class="v"></xx></div>
|
||||
<div class="grid v"><xx class="h"></xx></div>
|
||||
<div class="grid t9"><xx class="v"></xx></div>
|
||||
<div class="grid v t10"><xx class="h"></xx></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ var coltest = [
|
|||
"min-height:40%", "min-height:40%; max-width:30px"
|
||||
];
|
||||
var results = [
|
||||
"360px", "360px", "360px", "24px", "24px", "360px", "80px", "24px", "24px", "24px",
|
||||
"24px", "24px", "24px", "24px", "24px", "24px", "80px", "24px", "24px", "24px",
|
||||
"24px", "24px", "24px"
|
||||
];
|
||||
var item_width = [
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ var rowtest = [
|
|||
"min-width:80%; max-height:20px", "min-width:50%", "margin-left: 50px; width:50%"
|
||||
];
|
||||
var results = [
|
||||
"0/2px", "0/2px", "0/4px", "0/2px", "0/2px", "0/2px", "12px/2px", "20px/2px", "20px/2px", "24px/2px", "24px/52px"
|
||||
"0/2px", "0/2px", "0/4px", "0/2px", "0/2px", "0/2px", "12px/2px", "20px/2px", "20px/2px", "24px/2px", "312px/52px"
|
||||
];
|
||||
var item_height = [
|
||||
"0", "0", "0", "0", "0", "0", "12px", "20px", "20px", "24px", "312px"
|
||||
|
|
|
|||
|
|
@ -54,9 +54,9 @@ br { clear:both; }
|
|||
.c10 { grid-template-columns: minmax(10px,0) 1fr; }
|
||||
#px-border .c10 { grid-template-columns: minmax(30px,0) 1fr; }
|
||||
|
||||
#percent-border .c100 { grid-template-columns: 111px 0; }
|
||||
#percent-border .c100calc100 { grid-template-columns: 100px 11px; }
|
||||
#percent-border .c10 { grid-template-columns: minmax(11px,0) 0; }
|
||||
#percent-border .c100 { grid-template-columns: 100px 0; }
|
||||
#percent-border .c100calc100 { grid-template-columns: 100px 10px; }
|
||||
#percent-border .c10 { grid-template-columns: minmax(10px,0) 0; }
|
||||
#percent-border .c100100 { grid-template-columns: minmax(100px,0) 150px; }
|
||||
#percent-border .c200 { grid-template-columns: 250px; }
|
||||
</style>
|
||||
|
|
@ -99,7 +99,7 @@ var grids = [
|
|||
"grid c100",
|
||||
"grid c100",
|
||||
"grid",
|
||||
"grid c200",
|
||||
"grid c100",
|
||||
"grid c10",
|
||||
"grid c100",
|
||||
"grid c100",
|
||||
|
|
@ -110,7 +110,7 @@ var grids = [
|
|||
"grid c100",
|
||||
"grid c100",
|
||||
"grid",
|
||||
"grid c200",
|
||||
"grid c100",
|
||||
"grid c10",
|
||||
"grid c100",
|
||||
"grid c100",
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ var coltest = [
|
|||
"min-height:40%", "min-height:40%; max-width:30px"
|
||||
];
|
||||
var results = [
|
||||
"360px", "360px", "360px", "24px", "24px", "360px", "80px", "24px", "20px", "24px",
|
||||
"360px", "0px", "0px", "0px", "24px", "360px", "80px", "24px", "20px", "24px",
|
||||
"6px", "24px", "24px"
|
||||
];
|
||||
var item_width = [
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ var rowtest = [
|
|||
"min-width:80%; max-height:20px", "min-width:50%", "margin-left: 50px; width:50%"
|
||||
];
|
||||
var results = [
|
||||
"0/2px", "0/2px", "0/4px", "0/2px", "0/2px", "0/2px", "12px/2px", "20px/2px", "20px/2px", "24px/2px", "24px/52px"
|
||||
"0/2px", "0/2px", "0/4px", "0/2px", "0/2px", "0/2px", "12px/2px", "20px/2px", "20px/2px", "24px/2px", "312px/52px"
|
||||
];
|
||||
var item_height = [
|
||||
"0", "0", "0", "0", "0", "0", "12px", "20px", "20px", "24px", "312px"
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
|
|||
clear:left;
|
||||
}
|
||||
|
||||
.c1 { min-width:40px; margin-bottom: 2px; margin-right: 47px; }
|
||||
.c1 { width:40px; margin-bottom: 2px; margin-right: 47px; }
|
||||
.r1 { min-width:70px; margin-left: 38px; margin-top: 2px; }
|
||||
.c3 { min-width:0; margin: 2px 18px 1px 85px; }
|
||||
.c3 { width:10px; margin: 2px 18px 1px 71px; }
|
||||
|
||||
span {
|
||||
display: block;
|
||||
|
|
@ -52,21 +52,22 @@ x { display:inline-block; width:10px; height:18px; }
|
|||
<span class="r1"><x> </x></span>
|
||||
<span class="r1"><x> </x></span>
|
||||
</div>
|
||||
|
||||
<div class="grid" style="width:436px">
|
||||
<span class="c1" style="margin-right:41px"><x> </x></span>
|
||||
<span class="c1" style="width:374px; margin-right:41px"><x> </x></span>
|
||||
<span class="r1" style="margin-left:5px"><x> </x></span>
|
||||
<span class="c3" style="margin-left:405px; float:left;margin-top:1px;"><x> </x></span>
|
||||
</div>
|
||||
|
||||
<div class="grid" style="width:500px;">
|
||||
<span class="c1" style="min-width:20px;margin-right:448px"><x> </x></span>
|
||||
<span class="c1" style="width:20px;margin-right:448px"><x> </x></span>
|
||||
<span class="r1" style="min-width:10px;margin-left:28px; margin-right:426px"><x> </x></span>
|
||||
<span class="r1" style="min-width:30px;margin-left:28px; margin-right:426px"><x> </x></span>
|
||||
<span class="r1" style="min-width:10px;margin-left:28px; margin-right:426px"><x> </x></span>
|
||||
</div>
|
||||
|
||||
<div class="grid" style="width:583px;">
|
||||
<span class="c1" style="margin-right:55px"><x> </x></span>
|
||||
<span class="c1" style="width:507px; margin-right:55px"><x> </x></span>
|
||||
<span class="r1"><x> </x></span>
|
||||
<span class="c3" style="margin-left:538px; float:left;margin-top:1px;"><x> </x></span>
|
||||
</div>
|
||||
|
|
@ -74,13 +75,13 @@ x { display:inline-block; width:10px; height:18px; }
|
|||
<div class="grid" style="width:389px;">
|
||||
<span class="c1" style="width:100px"><x> </x></span>
|
||||
<span class="r1" style="width:300px;margin-left:68px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:245px;float:left;margin-top:1px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:131px;float:left;margin-top:1px;"><x> </x></span>
|
||||
</div>
|
||||
|
||||
<div class="grid" style="width:389px;">
|
||||
<span class="c1" style="width:100px"><x> </x></span>
|
||||
<span class="r1" style="width:300px;margin-left:68px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:245px;float:left;margin-top:1px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:131px;float:left;margin-top:1px;"><x> </x></span>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@ body,html { color:black; background:white; font-size:16px; padding:0; margin:0;
|
|||
clear:left;
|
||||
}
|
||||
|
||||
.c1 { min-width:40px; margin-bottom: 2px; margin-right: 47px; }
|
||||
.c1 { width:40px; margin-bottom: 2px; margin-right: 47px; }
|
||||
.r1 { min-width:70px; margin-left: 38px; margin-top: 2px; }
|
||||
.c3 { min-width:0; margin: 2px 18px 1px 85px; }
|
||||
.c3 { width:10px; margin: 2px 18px 1px 71px; }
|
||||
|
||||
span {
|
||||
display: block;
|
||||
|
|
@ -56,21 +56,22 @@ x { display:inline-block; width:10px; height:18px; }
|
|||
<span class="r1"><x> </x></span>
|
||||
<span class="r1"><x> </x></span>
|
||||
</div></div>
|
||||
|
||||
<div class="wrap"><div class="grid" style="width:436px">
|
||||
<span class="c1" style="margin-right:41px"><x> </x></span>
|
||||
<span class="c1" style="width:374px; margin-right:41px"><x> </x></span>
|
||||
<span class="r1" style="margin-left:5px"><x> </x></span>
|
||||
<span class="c3" style="margin-left:405px; float:left;margin-top:1px;"><x> </x></span>
|
||||
</div></div>
|
||||
|
||||
<div class="wrap" style="float:left;"><div class="grid" style="width:500px;">
|
||||
<span class="c1" style="min-width:20px;margin-right:448px"><x> </x></span>
|
||||
<span class="c1" style="width:20px;margin-right:448px"><x> </x></span>
|
||||
<span class="r1" style="min-width:10px;margin-left:28px; margin-right:426px"><x> </x></span>
|
||||
<span class="r1" style="min-width:30px;margin-left:28px; margin-right:426px"><x> </x></span>
|
||||
<span class="r1" style="min-width:10px;margin-left:28px; margin-right:426px"><x> </x></span>
|
||||
</div></div>
|
||||
|
||||
<div class="wrap"><div class="grid" style="width:583px;">
|
||||
<span class="c1" style="margin-right:55px"><x> </x></span>
|
||||
<span class="c1" style="width:507px; margin-right:55px"><x> </x></span>
|
||||
<span class="r1"><x> </x></span>
|
||||
<span class="c3" style="margin-left:538px; float:left;margin-top:1px;"><x> </x></span>
|
||||
</div></div>
|
||||
|
|
@ -78,13 +79,13 @@ x { display:inline-block; width:10px; height:18px; }
|
|||
<div class="wrap"><div class="grid" style="width:389px;">
|
||||
<span class="c1" style="width:100px"><x> </x></span>
|
||||
<span class="r1" style="width:300px;margin-left:68px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:245px;float:left;margin-top:1px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:131px;float:left;margin-top:1px;"><x> </x></span>
|
||||
</div></div>
|
||||
|
||||
<div class="wrap"><div class="grid" style="width:389px;">
|
||||
<span class="c1" style="width:100px"><x> </x></span>
|
||||
<span class="r1" style="width:300px;margin-left:68px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:245px;float:left;margin-top:1px;"><x> </x></span>
|
||||
<span class="c3" style="margin-left:131px;float:left;margin-top:1px;"><x> </x></span>
|
||||
</div></div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -127,10 +127,10 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
}
|
||||
|
||||
.gF {
|
||||
grid-template-columns: 22px
|
||||
1px
|
||||
1px
|
||||
auto;
|
||||
grid-template-columns: 2px
|
||||
20px
|
||||
2px
|
||||
0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -69,67 +69,67 @@ a {
|
|||
|
||||
<div style="float:left">
|
||||
<div class="grid" style="grid-template-rows:calc(12px)"><div class="item"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(15px/.9)"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:20px"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(18px)"><div class="item pbox b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(21px/0.9)"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(21px/.9)"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(21px/.9)"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:26px"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 36px"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 36px"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<div style="float:left" class="maxw">
|
||||
<div class="grid" style="grid-template-rows:calc(12px)"><div class="item"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(15px/.9)"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:20px"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(18px)"><div class="item pbox b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(21px/.9)"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(21px/.9)"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(21px/.9)"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:26px"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 36px"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 36px"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<div style="float:left" class="minw">
|
||||
<div class="grid" style="grid-template-rows:calc(12px)"><div class="item"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(15px/.9)"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:20px"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(18px)"><div class="item pbox b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(21px/.9)"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(21px/.9)"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(21px/.9)"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:26px"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 36px"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 36px"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<div style="float:left">
|
||||
<div class="grid" style="grid-template-rows:calc(15px/.9)"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(22.5px)"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(30px)"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(30px)"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:20px"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:28px"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:34px"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 54px"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<br clear="all">
|
||||
|
||||
<div style="float:left" class="maxw">
|
||||
<div class="grid" style="grid-template-rows:calc(15px/.9)"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(22.5px)"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(30px)"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(30px)"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:20px"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:28px"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:34px"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 54px"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<div style="float:left" class="minw">
|
||||
<div class="grid" style="grid-template-rows:calc(15px/.9)"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(15px/.9)"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(22.5px)"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:calc(30px)"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 calc(30px)"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:20px"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 30px"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:28px"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:34px"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-rows:0 54px"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -62,71 +62,71 @@ a {
|
|||
|
||||
<div style="float:left">
|
||||
<div class="grid" style="grid-template-columns:calc(10px)"><div class="item"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(18.75px)"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(18.75px)"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:15px"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 15px"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(16px)"><div class="item pbox b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(26.25px)"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(51.25px)"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(26.25px)"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:21px"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 41px"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 21px"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<br clear="all">
|
||||
|
||||
<div style="float:left" class="maxw">
|
||||
<div class="grid" style="grid-template-columns:calc(30px)"><div class="item"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(43.75px)"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:35px"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(36px)"><div class="item pbox b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(51.25px)"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(51.25px)"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(51.25px)"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:41px"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 41px"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 41px"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<br clear="all">
|
||||
|
||||
<div style="float:left" class="minw">
|
||||
<div class="grid" style="grid-template-columns:calc(10px)"><div class="item"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(18.75px)"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(43.75px)"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(18.75px)"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:15px"><div class="item pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 15px"><div class="item c2 pbox p"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(16px)"><div class="item pbox b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(26.25px)"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(51.25px)"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(26.25px)"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:21px"><div class="item pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 41px"><div class="item c1 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 21px"><div class="item c2 pbox p b"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<div style="float:left">
|
||||
<div class="grid" style="grid-template-columns:calc(15px/.9)"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(35px/.9)"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(15px/.9)"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(20px/.7)"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(37.15px)"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(37.15px)"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:15px"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 15px"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:20px"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:26px"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 26px"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<br clear="all">
|
||||
|
||||
<div style="float:left" class="maxw">
|
||||
<div class="grid" style="grid-template-columns:calc(35px/.9)"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(35px/.9)"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(35px/.9)"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(57.15px)"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(46px/.7)"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(46px/.7)"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:35px"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:40px"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:46px"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 46px"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
<div style="float:left" class="minw">
|
||||
<div class="grid" style="grid-template-columns:calc(15px/.9)"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(35px/.9)"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(15px/.9)"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(20px/.7)"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:calc(37.15px)"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 calc(37.15px)"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:15px"><div class="item pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 35px"><div class="item c1 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 15px"><div class="item c2 pbox m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:20px"><div class="item pbox p m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:26px"><div class="item pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
<div class="grid" style="grid-template-columns:0 26px"><div class="item c2 pbox p b m"><x></x><x></x><x></x></div><a></a></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -51,8 +51,8 @@ x { display:inline-block; height:10px; width:18px; }
|
|||
<div class="grid flex" style="width:1px;height:1px;"><span class="c1" style="margin-top:1px"><x></x></span></div>
|
||||
-->
|
||||
|
||||
<div class="grid mm" style="width:0;height:0;"><span class="c1" style="min-width:23px;min-height:10px"><x></x></span><span class="c2" style="position:relative;left:14px;width:18px;min-width:0;z-index:-1"><x></x></span></div>
|
||||
<div class="grid mm" style="width:1px;height:1px;"><span class="c1" style="min-width:23px;min-height:10px"><x></x></span><span class="c2" style="position:relative;left:14px;width:18px;min-width:0;z-index:-1"><x></x></span></div>
|
||||
<div class="grid mm" style="width:0;height:0;"><span class="c1" style="min-width:18px;min-height:10px"><x></x></span><span class="c2" style="position:relative;left:14px;width:18px;min-width:0;z-index:-1"><x></x></span></div>
|
||||
<div class="grid mm" style="width:1px;height:1px;"><span class="c1" style="min-width:18px;min-height:10px"><x></x></span><span class="c2" style="position:relative;left:14px;width:18px;min-width:0;z-index:-1"><x></x></span></div>
|
||||
<!-- TODO: fails due to broken align:stretch
|
||||
<div class="grid zero" style="width:0;height:0;"><span class="c1"><x></x></span></div>
|
||||
<div class="grid zero" style="width:1px;height:1px;"><span class="c1"><x></x></span></div>
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ br { clear: both; }
|
|||
</div>
|
||||
|
||||
<div class="float">
|
||||
<div class="grid" style="align-self:start; justify-self:start; grid-gap:15px">
|
||||
<div class="grid" style="width:60px; height:60px; grid-column-gap:12px">
|
||||
<span><x></x></span>
|
||||
<span><x></x></span>
|
||||
<span><x></x></span>
|
||||
|
|
@ -74,7 +74,7 @@ br { clear: both; }
|
|||
</div>
|
||||
|
||||
<div class="inline-grid">
|
||||
<div class="grid" style="align-self:start; justify-self:start; grid-gap:15px">
|
||||
<div class="grid" style="width:60px; height:60px; grid-column-gap:12px; align-self:start; justify-self:start;">
|
||||
<span><x></x></span>
|
||||
<span><x></x></span>
|
||||
<span><x></x></span>
|
||||
|
|
@ -141,12 +141,12 @@ br { clear: both; }
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="float" style="margin-top:-50px">
|
||||
<div class="grid" style="min-width:300%; grid-gap:15px 15px">
|
||||
<span><x></x></span>
|
||||
<span style="margin-left:31px; width:30px"><x></x></span>
|
||||
<span><x></x></span>
|
||||
<span style="margin-left:31px; width:30px"><x></x></span>
|
||||
<div class="float" style="margin-top:-50px; width:62px">
|
||||
<div class="grid" style="padding-left:186px; height:60px; grid-column-gap:calc(186px * 0.2);">
|
||||
<span style="margin-left:-186px; width:30px"><x></x></span>
|
||||
<span style="margin-left:-186px; width:30px"><x></x></span>
|
||||
<span style="margin-left:-186px; width:30px"><x></x></span>
|
||||
<span style="margin-left:-186px; width:30px"><x></x></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -83,12 +83,16 @@ fill,fit {
|
|||
|
||||
.zero-progress {
|
||||
grid-row-gap: calc(10px - 1%);
|
||||
grid-template-rows: [a] 10px repeat(4, [b] minmax(0,auto) [c]) [d];
|
||||
grid-template-rows: [a] 10px repeat(3, [b] 0 [c]) [d];
|
||||
}
|
||||
.w50.zero-progress {
|
||||
grid-row-gap: calc(10px - 1%);
|
||||
grid-template-rows: [a] 10px repeat(3, [b] 0 [c]) [d];
|
||||
}
|
||||
.mw50.zero-progress {
|
||||
grid-row-gap: calc(10px - 1%);
|
||||
grid-template-rows: [a] 10px repeat(4, [b] 0 [c]) [d];
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
|||
|
|
@ -129,55 +129,55 @@ float { float:left; margin-right:20px; }
|
|||
<body>
|
||||
|
||||
<float>
|
||||
<div class="grid c1 t1 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x5"><x></x><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x4"><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x4"><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x4"><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x4"><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x3"><x></x><x></x><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x3"><x></x><x></x><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x3"><x></x><x></x><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
</float>
|
||||
|
||||
<float>
|
||||
<div class="grid c1 t1 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x2"><x></x><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x2"><x></x><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x2"><x></x><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x2"><x></x><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x2"><x></x><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x2"><x></x><a></a><b></b><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 x1"><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x1"><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x1"><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x1"><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x1"><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x1"><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x1"><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x1"><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x1"><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x1"><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x1"><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x1"><a></a><b></b><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 x1 p1"><a></a><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="grid c2 t1 x1 p1"><a></a><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="grid c3 t1 x1 p1"><a></a><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="grid c1 t1 x1 p1"><a></a><b></b><f></f></div>
|
||||
<div class="grid c2 t1 x1 p1"><a></a><b></b><c></c><e></e><f></f></div>
|
||||
<div class="grid c3 t1 x1 p1"><a></a><b></b><c></c><e></e><f></f></div>
|
||||
|
||||
<div class="grid c1 t2 x0 p1"><a></a><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="grid c2 t2 x0 p1"><a></a><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="grid c3 t2 x0 p1"><a></a><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="grid c1 t2 x0 p1"><a></a><b></b><f></f></div>
|
||||
<div class="grid c2 t2 x0 p1"><a></a><b></b><f></f></div>
|
||||
<div class="grid c3 t2 x0 p1"><a></a><b></b><f></f></div>
|
||||
</float>
|
||||
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ float { float:left; margin-right:20px; }
|
|||
<div class="grid c2 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x5"><x></x><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x4"><x></x><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
|
|
@ -154,23 +154,23 @@ float { float:left; margin-right:20px; }
|
|||
<div class="grid c2 t2 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x4"><x></x><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x3"><x></x><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x3"><x></x><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
</float>
|
||||
|
||||
<float>
|
||||
<div class="grid c1 t1 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 x2"><x></x><a></a><b></b><f></f><x></x></div>
|
||||
<div class="grid c2 t1 x2"><x></x><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 x2"><x></x><a></a><b></b><c></c><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x2"><x></x><a></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 x2"><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 x2"><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 x2"><x></x><a></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
</float>
|
||||
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -139,8 +139,7 @@ float { float:left; margin-right:20px; }
|
|||
|
||||
.x2 e { left:23px; width:20px; right:auto; }
|
||||
.c2.x2 e { left:20px; }
|
||||
.t1.c3.x2 e { width:40px; }
|
||||
.t1.c3.x2 b { width:63px; }
|
||||
.t1.c3.x2 e { width:20px; }
|
||||
.t1.c3.x2 c { width:20px; right:auto;}
|
||||
|
||||
.t2.x5 e { left:23px; width:60px; }
|
||||
|
|
@ -159,35 +158,35 @@ float { float:left; margin-right:20px; }
|
|||
<div class="grid c2 t1 n x5"><x></x><x></x><x></x><x></x><y></y><a style="width:55px"></a><b></b><c></c><d></d><e class="s2a e6a"></e><f class="e5a"></f><x></x></div>
|
||||
<div class="grid c3 t1 n x5"><x></x><x></x><x></x><x></x><y></y><y></y><a style="width:47px"></a><b></b><c></c><d></d><e class="s2 e6b"></e><f class="e5b"></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 m x5"><x></x><x></x><x></x><x></x><y></y><a style="width:82px"></a><b></b><c></c><d></d><e class="s2"></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t2 m x5"><x></x><x></x><x></x><x></x><y></y><a style="width:75px"></a><b></b><c></c><d></d><e class="s2e"></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c3 t2 m x5"><x></x><x></x><x></x><x></x><y></y><y></y><a style="width:67px"></a><b></b><c></c><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c1 t2 m x5"><x></x><x></x><x></x><x></x><y></y><a style="width:82px"></a><b></b><d></d><e class="s2"></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t2 m x5"><x></x><x></x><x></x><x></x><y></y><a style="width:75px"></a><b></b><d></d><e class="s2e"></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c3 t2 m x5"><x></x><x></x><x></x><x></x><y></y><y></y><a style="width:67px"></a><b></b><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 o x4"><x></x><x></x><x></x><y></y><a style="width:62px"></a><b></b><c></c><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t1 o x4"><x></x><x></x><x></x><y></y><a style="width:55px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 o x4"><x></x><x></x><x></x><y></y><y></y><a style="width:47px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 o x4"><x></x><x></x><x></x><y></y><a style="width:102px"></a><b></b><c></c><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t2 o x4"><x></x><x></x><x></x><y></y><a style="width:95px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 o x4"><x></x><x></x><x></x><y></y><y></y><a style="width:87px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 o x4"><x></x><x></x><x></x><y></y><a style="width:102px"></a><b></b><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t2 o x4"><x></x><x></x><x></x><y></y><a style="width:95px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 o x4"><x></x><x></x><x></x><y></y><y></y><a style="width:87px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t1 n x3"><x></x><x></x><y></y><a style="width:62px"></a><b></b><c></c><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t1 n x3"><x></x><x></x><y></y><a style="width:55px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 n x3"><x></x><x></x><y></y><y></y><a style="width:47px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 n x3"><x></x><x></x><y></y><a style="width:102px"></a><b></b><c></c><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t2 n x3"><x></x><x></x><y></y><a style="width:95px"></a><b></b><c></c><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c3 t2 n x3"><x></x><x></x><y></y><y></y><a style="width:87px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 n x3"><x></x><x></x><y></y><a style="width:102px"></a><b></b><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c2 t2 n x3"><x></x><x></x><y></y><a style="width:95px"></a><b></b><d></d><e></e><f class="e5"></f><x></x></div>
|
||||
<div class="grid c3 t2 n x3"><x></x><x></x><y></y><y></y><a style="width:87px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
</float>
|
||||
|
||||
<float>
|
||||
<div class="grid c1 t1 n x2"><x></x><y></y><a style="width:122px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 n x2"><x></x><y></y><a style="width:115px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 n x2"><x></x><y></y><y></y><a style="width:87px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t1 n x2"><x></x><y></y><a style="width:122px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t1 n x2"><x></x><y></y><a style="width:115px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t1 n x2"><x></x><y></y><y></y><a style="width:107px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
|
||||
<div class="grid c1 t2 n x2"><x></x><y></y><a style="width:122px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 n x2"><x></x><y></y><a style="width:115px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 n x2"><x></x><y></y><y></y><a style="width:107px"></a><b></b><c></c><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c1 t2 n x2"><x></x><y></y><a style="width:122px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c2 t2 n x2"><x></x><y></y><a style="width:115px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
<div class="grid c3 t2 n x2"><x></x><y></y><y></y><a style="width:107px"></a><b></b><d></d><e></e><f></f><x></x></div>
|
||||
</float>
|
||||
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -156,32 +156,32 @@ function testGridTemplateColumns(elem, expected) {
|
|||
}
|
||||
}
|
||||
var a1 = [
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px",
|
||||
"[a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px",
|
||||
"[a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px",
|
||||
"[a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c d] 20px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px",
|
||||
"[a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c d] 20px 3px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 20px",
|
||||
"[a b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c d] 20px 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c d] 20px 3px"
|
||||
"3px [a b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c d] 20px 3px"
|
||||
];
|
||||
var a2 = [
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c d]",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"[a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"[a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"[a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"3px [a b] 0px [c b] 20px [c b] 20px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c b] 0px [c d]",
|
||||
"[a b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 3px",
|
||||
"3px [a b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c d] 3px"
|
||||
"3px [a b] 0px [c b] 20px [c b] 0px [c b] 20px [c b] 0px [c b] 0px [c b] 0px [c d] 3px"
|
||||
];
|
||||
function runTest() {
|
||||
var t1 = document.querySelectorAll('.t1');
|
||||
|
|
@ -195,7 +195,7 @@ function runTest() {
|
|||
|
||||
document.documentElement.className='';
|
||||
}
|
||||
document.addEventListener('MozReftestInvalidate', runTest, false);
|
||||
document.addEventListener('MozReftestInvalidate', runTest);
|
||||
|
||||
</script>
|
||||
|
||||
|
|
|
|||
144
layout/reftests/css-grid/grid-repeat-auto-fill-fit-012-ref.html
Normal file
144
layout/reftests/css-grid/grid-repeat-auto-fill-fit-012-ref.html
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: repeat(auto-fit) with removed tracks</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1417711">
|
||||
<style type="text/css">
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace; padding:0px; margin:0;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.grid {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid: 10px / repeat(5, 30px);
|
||||
grid-auto-columns: 2px;
|
||||
background: lightgrey;
|
||||
margin-bottom: 4px;
|
||||
grid-gap: 5px;
|
||||
}
|
||||
.distribute {
|
||||
grid-gap: 0;
|
||||
align-content: space-around;
|
||||
}
|
||||
|
||||
span {
|
||||
background: blue;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.abs {
|
||||
position: absolute;
|
||||
top:0; right:0; bottom:0; left:0;
|
||||
grid-column-end: span 1;
|
||||
background: pink;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1 / 2" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1 / 2" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1 / 3" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1 / 2" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1 / auto" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1 / 2" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1 / 2" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1 / 3" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1 / 2" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1 / auto" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
160
layout/reftests/css-grid/grid-repeat-auto-fill-fit-012.html
Normal file
160
layout/reftests/css-grid/grid-repeat-auto-fill-fit-012.html
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Grid Test: repeat(auto-fit) with removed tracks</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1417711">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid/#valdef-repeat-auto-fill">
|
||||
<link rel="match" href="grid-repeat-auto-fill-fit-012-ref.html">
|
||||
<style type="text/css">
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace; padding:0px; margin:0;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.grid {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid: 10px / repeat(auto-fit, 30px);
|
||||
grid-auto-columns: 2px;
|
||||
background: lightgrey;
|
||||
margin-bottom: 4px;
|
||||
grid-gap: 5px;
|
||||
}
|
||||
.distribute {
|
||||
grid-gap: 0;
|
||||
align-content: space-around;
|
||||
}
|
||||
|
||||
span {
|
||||
background: blue;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.abs {
|
||||
position: absolute;
|
||||
top:0; right:0; bottom:0; left:0;
|
||||
grid-column-end: span 1;
|
||||
background: pink;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 4 / 5" class="abs"></span>
|
||||
<span style="grid-column: 3"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 4 / 5" class="abs"></span>
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 1 / 5" class="abs"></span>
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
<span style="grid-column: 2"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
<span style="grid-column: 2 / 4"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
<span style="grid-column: 4 / 5"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid">
|
||||
<span style="grid-column: 2 / 10" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 4 / 5" class="abs"></span>
|
||||
<span style="grid-column: 3"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 4 / 5" class="abs"></span>
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 1 / 5" class="abs"></span>
|
||||
<span style="grid-column: 1"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
<span style="grid-column: 2"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
<span style="grid-column: 2 / 4"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
<span style="grid-column: 4 / 5"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 2 / 5" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="grid distribute">
|
||||
<span style="grid-column: 2 / 10" class="abs"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
116
layout/reftests/css-grid/grid-repeat-auto-fill-fit-013-ref.html
Normal file
116
layout/reftests/css-grid/grid-repeat-auto-fill-fit-013-ref.html
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Grid Test Reference: test auto placement in repeat auto-fit grids with leading implicit tracks</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 10px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.wrapper {
|
||||
display: grid;
|
||||
width: 600px;
|
||||
background-color: #f00;
|
||||
}
|
||||
.wrapper > * {
|
||||
background-color: #444;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.templateFit {
|
||||
grid-template-columns: 10px 10px repeat(auto-fill, 40px);
|
||||
}
|
||||
.templateFixedFit {
|
||||
grid-template-columns: 10px calc(10px + 20px) repeat(auto-fill, 40px);
|
||||
}
|
||||
.templateFitFixed {
|
||||
grid-template-columns: 10px 10px repeat(auto-fill, 40px) 40px;
|
||||
}
|
||||
.templateFixedFitFixed {
|
||||
grid-template-columns: 10px calc(10px + 20px) repeat(auto-fill, 40px) 40px;
|
||||
}
|
||||
|
||||
z {
|
||||
grid-column: 1;
|
||||
}
|
||||
z::after {
|
||||
content: "Z";
|
||||
}
|
||||
|
||||
y {
|
||||
grid-column: auto;
|
||||
}
|
||||
y::after {
|
||||
content: "Y";
|
||||
}
|
||||
|
||||
|
||||
b {
|
||||
grid-column: 3;
|
||||
}
|
||||
b::after {
|
||||
content: "B";
|
||||
}
|
||||
|
||||
c {
|
||||
grid-column: 4;
|
||||
}
|
||||
c::after {
|
||||
content: "C";
|
||||
}
|
||||
|
||||
d {
|
||||
grid-column: 5;
|
||||
}
|
||||
d::after {
|
||||
content: "D";
|
||||
}
|
||||
|
||||
e {
|
||||
grid-column: 6;
|
||||
}
|
||||
e::after {
|
||||
content: "E";
|
||||
}
|
||||
|
||||
f {
|
||||
grid-column: 7;
|
||||
}
|
||||
f::after {
|
||||
content: "F";
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="wrapper templateFit"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFit"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFit"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFit"><z></z><b></b><d style="grid-column: 4"></d></div>
|
||||
<div class="wrapper templateFit"><z></z><b></b><d style="grid-column: 4"></d><f style="grid-column: 5"></f></div>
|
||||
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><d style="grid-column: 4"></d></div>
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><d style="grid-column: 4"></d><f style="grid-column: 5"></f></div>
|
||||
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><d style="grid-column: 4"></d></div>
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><d style="grid-column: 4"></d><f style="grid-column: 5"></f></div>
|
||||
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><d style="grid-column: 4"></d></div>
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><d style="grid-column: 4"></d><f style="grid-column: 5"></f></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
135
layout/reftests/css-grid/grid-repeat-auto-fill-fit-013.html
Normal file
135
layout/reftests/css-grid/grid-repeat-auto-fill-fit-013.html
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Grid Test: test placement in repeat auto-fit grids with leading implicit tracks</title>
|
||||
<link rel="author" title="Brad Werth" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1416350">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid/#valdef-repeat-auto-fill">
|
||||
<link rel="match" href="grid-repeat-auto-fill-fit-013-ref.html">
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin: 10px;
|
||||
font-size: 10px;
|
||||
}
|
||||
.wrapper {
|
||||
display: grid;
|
||||
width: 600px;
|
||||
background-color: #f00;
|
||||
grid-auto-columns: 10px;
|
||||
grid-auto-flow: row;
|
||||
}
|
||||
.wrapper > * {
|
||||
background-color: #444;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.relative {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.absposchild {
|
||||
z-index: -1;
|
||||
position: absolute;
|
||||
grid-column-end: span 1;
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
.templateFit {
|
||||
grid-template-columns: repeat(auto-fit, 40px);
|
||||
}
|
||||
.templateFixedFit {
|
||||
grid-template-columns: 20px repeat(auto-fit, 40px);
|
||||
}
|
||||
.templateFitFixed {
|
||||
grid-template-columns: repeat(auto-fit, 40px) 40px;
|
||||
}
|
||||
.templateFixedFitFixed {
|
||||
grid-template-columns: 20px repeat(auto-fit, 40px) 40px;
|
||||
}
|
||||
|
||||
z {
|
||||
grid-column: -18;
|
||||
}
|
||||
z::after {
|
||||
content: "Z";
|
||||
}
|
||||
|
||||
y {
|
||||
grid-column: auto;
|
||||
}
|
||||
y::after {
|
||||
content: "Y";
|
||||
}
|
||||
|
||||
|
||||
b {
|
||||
grid-column: 3;
|
||||
}
|
||||
b::after {
|
||||
content: "B";
|
||||
}
|
||||
|
||||
c {
|
||||
grid-column: 5;
|
||||
}
|
||||
c::after {
|
||||
content: "C";
|
||||
}
|
||||
|
||||
d {
|
||||
grid-column: 7;
|
||||
}
|
||||
d::after {
|
||||
content: "D";
|
||||
}
|
||||
|
||||
e {
|
||||
grid-column: 9;
|
||||
}
|
||||
e::after {
|
||||
content: "E";
|
||||
}
|
||||
|
||||
f {
|
||||
grid-column: 11;
|
||||
}
|
||||
f::after {
|
||||
content: "F";
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="wrapper templateFit"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFit"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFit"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFit relative"><z></z><b></b><c class="absposchild"></c><d></d></div>
|
||||
<div class="wrapper templateFit relative"><z></z><b></b><c class="absposchild"></c><d></d><e class="absposchild"></e><f></f></div>
|
||||
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFixedFit"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFixedFit relative"><z></z><b></b><c class="absposchild"></c><d></d></div>
|
||||
<div class="wrapper templateFixedFit relative"><z></z><b></b><c class="absposchild"></c><d></d><e class="absposchild"></e><f></f></div>
|
||||
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFitFixed"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFitFixed relative"><z></z><b></b><c class="absposchild"></c><d></d></div>
|
||||
<div class="wrapper templateFitFixed relative"><z></z><b></b><c class="absposchild"></c><d></d><e class="absposchild"></e><f></f></div>
|
||||
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><y></y></div>
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><c></c><d></d></div>
|
||||
<div class="wrapper templateFixedFitFixed"><z></z><b></b><c></c><d></d><e></e><f></f></div>
|
||||
<div class="wrapper templateFixedFitFixed relative"><z></z><b></b><c class="absposchild"></c><d></d></div>
|
||||
<div class="wrapper templateFixedFitFixed relative"><z></z><b></b><c class="absposchild"></c><d></d><e class="absposchild"></e><f></f></div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -27,34 +27,34 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
background: grey;
|
||||
}
|
||||
.g1 .d1 {
|
||||
width: 52px;
|
||||
width: 0px;
|
||||
}
|
||||
.g2 .d1 {
|
||||
width: 56px;
|
||||
width: 0px;
|
||||
}
|
||||
.g2f .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g3 .d1 {
|
||||
width: 56px;
|
||||
width: 0px;
|
||||
}
|
||||
.g4 .d1 {
|
||||
width: 96px;
|
||||
width: 80px;
|
||||
}
|
||||
.g4f .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g5 .d1 {
|
||||
width: 96px;
|
||||
width: 80px;
|
||||
}
|
||||
.g6 .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g6f .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g7 .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g8 .t {
|
||||
width: 196px;
|
||||
|
|
@ -63,19 +63,19 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
width: 200px;
|
||||
}
|
||||
.g9 .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.gA .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.gB .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.gC .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.gD .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.t { grid-column: span 1; border:2px solid; }
|
||||
|
|
|
|||
|
|
@ -27,34 +27,34 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
background: grey;
|
||||
}
|
||||
.g1 .d1 {
|
||||
width: 52px;
|
||||
width: 0px;
|
||||
}
|
||||
.g2 .d1 {
|
||||
width: 56px;
|
||||
width: 0px;
|
||||
}
|
||||
.g2f .d1 {
|
||||
width: 69px;
|
||||
}
|
||||
.g3 .d1 {
|
||||
width: 56px;
|
||||
width: 0px;
|
||||
}
|
||||
.g4 .d1 {
|
||||
width: 96px;
|
||||
width: 80px;
|
||||
}
|
||||
.g4f .d1 {
|
||||
width: 104px;
|
||||
}
|
||||
.g5 .d1 {
|
||||
width: 96px;
|
||||
width: 80px;
|
||||
}
|
||||
.g6 .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g6f .d1 {
|
||||
width: 89px;
|
||||
}
|
||||
.g7 .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.g8 .t {
|
||||
width: 196px;
|
||||
|
|
@ -63,19 +63,19 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
width: 200px;
|
||||
}
|
||||
.g9 .d1 {
|
||||
width: 69px;
|
||||
width: 0px;
|
||||
}
|
||||
.gA .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.gB .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.gC .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.gD .d1 {
|
||||
width: 93px;
|
||||
width: 80px;
|
||||
}
|
||||
.d2 {
|
||||
position: absolute;
|
||||
|
|
@ -84,10 +84,10 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
background: blue;
|
||||
}
|
||||
.g1 .d2 {
|
||||
width: 448px;
|
||||
width: 500px;
|
||||
}
|
||||
.g2 .d2 {
|
||||
width: 444px;
|
||||
width: 500px;
|
||||
}
|
||||
.g2f .d2 {
|
||||
right: auto;
|
||||
|
|
@ -95,10 +95,10 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
width: 35px;
|
||||
}
|
||||
.g3 .d2 {
|
||||
width: 444px;
|
||||
width: 500px;
|
||||
}
|
||||
.g4 .d2 {
|
||||
width: 404px;
|
||||
width: 420px;
|
||||
}
|
||||
.g4f .d2 {
|
||||
right: auto;
|
||||
|
|
@ -106,10 +106,10 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
width: 35px;
|
||||
}
|
||||
.g5 .d2 {
|
||||
width: 404px;
|
||||
width: 420px;
|
||||
}
|
||||
.g6 .d2 {
|
||||
width: 431px;
|
||||
width: 500px;
|
||||
}
|
||||
.g6f .d2 {
|
||||
right: auto;
|
||||
|
|
@ -117,25 +117,25 @@ body,html { color:black; background:white; font-family:monospace; font-size:16px
|
|||
width: 35px;
|
||||
}
|
||||
.g7 .d2 {
|
||||
width: 431px;
|
||||
width: 500px;
|
||||
}
|
||||
.g8 .d2 {
|
||||
width: 300px;
|
||||
}
|
||||
.g9 .d2 {
|
||||
width: 431px;
|
||||
width: 500px;
|
||||
}
|
||||
.gA .d2 {
|
||||
width: 407px;
|
||||
width: 420px;
|
||||
}
|
||||
.gB .d2 {
|
||||
width: 407px;
|
||||
width: 420px;
|
||||
}
|
||||
.gC .d2 {
|
||||
width: 407px;
|
||||
width: 420px;
|
||||
}
|
||||
.gD .d2 {
|
||||
width: 407px;
|
||||
width: 420px;
|
||||
}
|
||||
|
||||
.t { grid-column: span 1; border:2px solid; }
|
||||
|
|
|
|||
|
|
@ -112,9 +112,9 @@ skip-if(Android) == grid-auto-min-sizing-percent-001.html grid-auto-min-sizing-p
|
|||
== grid-item-auto-min-size-clamp-001.html grid-item-auto-min-size-clamp-001-ref.html
|
||||
== grid-item-auto-min-size-clamp-002.html grid-item-auto-min-size-clamp-002-ref.html
|
||||
== grid-item-auto-min-size-clamp-003.html grid-item-auto-min-size-clamp-003-ref.html
|
||||
== grid-item-auto-min-size-clamp-004.html grid-item-auto-min-size-clamp-004-ref.html
|
||||
# == grid-item-auto-min-size-clamp-004.html grid-item-auto-min-size-clamp-004-ref.html # bug 1421976
|
||||
== grid-item-auto-min-size-clamp-005.html grid-item-auto-min-size-clamp-005-ref.html
|
||||
== grid-item-auto-min-size-clamp-006.html grid-item-auto-min-size-clamp-006-ref.html
|
||||
# == grid-item-auto-min-size-clamp-006.html grid-item-auto-min-size-clamp-006-ref.html # bug 1421976
|
||||
== grid-item-auto-min-size-clamp-007.html grid-item-auto-min-size-clamp-007-ref.html
|
||||
== grid-item-overflow-stretch-001.html grid-item-overflow-stretch-001-ref.html
|
||||
== grid-item-overflow-stretch-002.html grid-item-overflow-stretch-002-ref.html
|
||||
|
|
@ -184,6 +184,8 @@ skip-if(Android&&isDebugBuild) == grid-row-gap-004.html grid-row-gap-004-ref.htm
|
|||
== grid-repeat-auto-fill-fit-009.html grid-repeat-auto-fill-fit-009-ref.html
|
||||
== grid-repeat-auto-fill-fit-010.html grid-repeat-auto-fill-fit-010-ref.html
|
||||
== grid-repeat-auto-fill-fit-011.html grid-repeat-auto-fill-fit-010-ref.html
|
||||
== grid-repeat-auto-fill-fit-012.html grid-repeat-auto-fill-fit-012-ref.html
|
||||
== grid-repeat-auto-fill-fit-013.html grid-repeat-auto-fill-fit-013-ref.html
|
||||
== grid-item-blockifying-001.html grid-item-blockifying-001-ref.html
|
||||
== grid-fragmentation-001.html grid-fragmentation-001-ref.html
|
||||
== grid-fragmentation-002.html grid-fragmentation-002-ref.html
|
||||
|
|
|
|||
|
|
@ -13,20 +13,20 @@ div.v, div.h {
|
|||
display: block;
|
||||
position: relative;
|
||||
border: 1px dashed silver;
|
||||
width:92px;
|
||||
height:60px;
|
||||
width:74px;
|
||||
height:24px;
|
||||
}
|
||||
div.h {
|
||||
width:124px;
|
||||
height:98px;
|
||||
width:62px;
|
||||
height:61.2px;
|
||||
}
|
||||
.h span {
|
||||
margin: 7px 13px 62px 25px;
|
||||
padding: 1px 3px 12px 37px;
|
||||
margin: 7px 13px 32px 12px;
|
||||
padding: 1px 3px 6px 19px;
|
||||
}
|
||||
.v span {
|
||||
margin: 7px 13px 30px 12px;
|
||||
padding: 1px 3px 6px 18px;
|
||||
margin: 7px 13px 30px 5px;
|
||||
padding: 1px 3px 2px 7px;
|
||||
}
|
||||
|
||||
span {
|
||||
|
|
|
|||
|
|
@ -1499,7 +1499,7 @@ CSS_PROP_COLUMN(
|
|||
CSS_PROPERTY_PARSE_VALUE |
|
||||
CSS_PROPERTY_VALUE_NONNEGATIVE,
|
||||
"",
|
||||
VARIANT_HL | VARIANT_NORMAL | VARIANT_CALC,
|
||||
VARIANT_HLP | VARIANT_NORMAL | VARIANT_CALC,
|
||||
nullptr,
|
||||
offsetof(nsStyleColumn, mColumnGap),
|
||||
eStyleAnimType_Coord)
|
||||
|
|
|
|||
|
|
@ -3495,7 +3495,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleColumn
|
|||
|
||||
uint32_t mColumnCount; // [reset] see nsStyleConsts.h
|
||||
nsStyleCoord mColumnWidth; // [reset] coord, auto
|
||||
nsStyleCoord mColumnGap; // [reset] coord, normal
|
||||
nsStyleCoord mColumnGap; // [reset] <length-percentage> | normal
|
||||
|
||||
mozilla::StyleComplexColor mColumnRuleColor; // [reset]
|
||||
uint8_t mColumnRuleStyle; // [reset]
|
||||
|
|
|
|||
|
|
@ -1438,7 +1438,7 @@ var gCSSProperties = {
|
|||
inherited: false,
|
||||
type: CSS_TYPE_LONGHAND,
|
||||
initial_values: [ "normal", "1em", "calc(-2em + 3em)" ],
|
||||
other_values: [ "2px", "4em",
|
||||
other_values: [ "2px", "1em", "4em", "3%", "calc(3%)", "calc(1em - 3%)",
|
||||
"calc(2px)",
|
||||
"calc(-2px)",
|
||||
"calc(0px)",
|
||||
|
|
@ -1448,7 +1448,7 @@ var gCSSProperties = {
|
|||
"calc(25px*3)",
|
||||
"calc(3*25px + 5em)",
|
||||
],
|
||||
invalid_values: [ "3%", "-1px", "4" ]
|
||||
invalid_values: [ "-3%", "-1px", "4" ]
|
||||
},
|
||||
"-moz-column-gap": {
|
||||
domProp: "MozColumnGap",
|
||||
|
|
|
|||
|
|
@ -796,12 +796,12 @@ nsTableCellFrame::GetPrefISize(nsRenderingContext *aRenderingContext)
|
|||
}
|
||||
|
||||
/* virtual */ nsIFrame::IntrinsicISizeOffsetData
|
||||
nsTableCellFrame::IntrinsicISizeOffsets()
|
||||
nsTableCellFrame::IntrinsicISizeOffsets(nscoord aPercentageBasis)
|
||||
{
|
||||
IntrinsicISizeOffsetData result = nsContainerFrame::IntrinsicISizeOffsets();
|
||||
IntrinsicISizeOffsetData result =
|
||||
nsContainerFrame::IntrinsicISizeOffsets(aPercentageBasis);
|
||||
|
||||
result.hMargin = 0;
|
||||
result.hPctMargin = 0;
|
||||
|
||||
WritingMode wm = GetWritingMode();
|
||||
result.hBorder = GetBorderWidth(wm).IStartEnd(wm);
|
||||
|
|
|
|||
|
|
@ -118,7 +118,8 @@ public:
|
|||
|
||||
virtual nscoord GetMinISize(nsRenderingContext *aRenderingContext) override;
|
||||
virtual nscoord GetPrefISize(nsRenderingContext *aRenderingContext) override;
|
||||
virtual IntrinsicISizeOffsetData IntrinsicISizeOffsets() override;
|
||||
IntrinsicISizeOffsetData IntrinsicISizeOffsets(nscoord aPercentageBasis =
|
||||
NS_UNCONSTRAINEDSIZE) override;
|
||||
|
||||
virtual void Reflow(nsPresContext* aPresContext,
|
||||
ReflowOutput& aDesiredSize,
|
||||
|
|
|
|||
|
|
@ -1564,16 +1564,15 @@ nsTableFrame::GetPrefISize(nsRenderingContext *aRenderingContext)
|
|||
}
|
||||
|
||||
/* virtual */ nsIFrame::IntrinsicISizeOffsetData
|
||||
nsTableFrame::IntrinsicISizeOffsets()
|
||||
nsTableFrame::IntrinsicISizeOffsets(nscoord aPercentageBasis)
|
||||
{
|
||||
IntrinsicISizeOffsetData result = nsContainerFrame::IntrinsicISizeOffsets();
|
||||
IntrinsicISizeOffsetData result =
|
||||
nsContainerFrame::IntrinsicISizeOffsets(aPercentageBasis);
|
||||
|
||||
result.hMargin = 0;
|
||||
result.hPctMargin = 0;
|
||||
|
||||
if (IsBorderCollapse()) {
|
||||
result.hPadding = 0;
|
||||
result.hPctPadding = 0;
|
||||
|
||||
WritingMode wm = GetWritingMode();
|
||||
LogicalMargin outerBC = GetIncludedOuterBCBorder(wm);
|
||||
|
|
|
|||
|
|
@ -324,7 +324,8 @@ public:
|
|||
// border to the results of these functions.
|
||||
virtual nscoord GetMinISize(nsRenderingContext *aRenderingContext) override;
|
||||
virtual nscoord GetPrefISize(nsRenderingContext *aRenderingContext) override;
|
||||
virtual IntrinsicISizeOffsetData IntrinsicISizeOffsets() override;
|
||||
IntrinsicISizeOffsetData IntrinsicISizeOffsets(nscoord aPercentageBasis =
|
||||
NS_UNCONSTRAINEDSIZE) override;
|
||||
|
||||
virtual mozilla::LogicalSize
|
||||
ComputeSize(nsRenderingContext* aRenderingContext,
|
||||
|
|
|
|||
191
media/libwebp/dsp/alpha_processing_neon.c
Normal file
191
media/libwebp/dsp/alpha_processing_neon.c
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
// Copyright 2017 Google Inc. All Rights Reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
// that can be found in the COPYING file in the root of the source
|
||||
// tree. An additional intellectual property rights grant can be found
|
||||
// in the file PATENTS. All contributing project authors may
|
||||
// be found in the AUTHORS file in the root of the source tree.
|
||||
// -----------------------------------------------------------------------------
|
||||
//
|
||||
// Utilities for processing transparent channel, NEON version.
|
||||
//
|
||||
// Author: Skal (pascal.massimino@gmail.com)
|
||||
|
||||
#include "../dsp/dsp.h"
|
||||
|
||||
#if defined(WEBP_USE_NEON)
|
||||
|
||||
#include "../dsp/neon.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define MULTIPLIER(a) ((a) * 0x8081)
|
||||
#define PREMULTIPLY(x, m) (((x) * (m)) >> 23)
|
||||
|
||||
#define MULTIPLY_BY_ALPHA(V, ALPHA, OTHER) do { \
|
||||
const uint8x8_t alpha = (V).val[(ALPHA)]; \
|
||||
const uint16x8_t r1 = vmull_u8((V).val[1], alpha); \
|
||||
const uint16x8_t g1 = vmull_u8((V).val[2], alpha); \
|
||||
const uint16x8_t b1 = vmull_u8((V).val[(OTHER)], alpha); \
|
||||
/* we use: v / 255 = (v + 1 + (v >> 8)) >> 8 */ \
|
||||
const uint16x8_t r2 = vsraq_n_u16(r1, r1, 8); \
|
||||
const uint16x8_t g2 = vsraq_n_u16(g1, g1, 8); \
|
||||
const uint16x8_t b2 = vsraq_n_u16(b1, b1, 8); \
|
||||
const uint16x8_t r3 = vaddq_u16(r2, kOne); \
|
||||
const uint16x8_t g3 = vaddq_u16(g2, kOne); \
|
||||
const uint16x8_t b3 = vaddq_u16(b2, kOne); \
|
||||
(V).val[1] = vshrn_n_u16(r3, 8); \
|
||||
(V).val[2] = vshrn_n_u16(g3, 8); \
|
||||
(V).val[(OTHER)] = vshrn_n_u16(b3, 8); \
|
||||
} while (0)
|
||||
|
||||
static void ApplyAlphaMultiply_NEON(uint8_t* rgba, int alpha_first,
|
||||
int w, int h, int stride) {
|
||||
const uint16x8_t kOne = vdupq_n_u16(1u);
|
||||
while (h-- > 0) {
|
||||
uint32_t* const rgbx = (uint32_t*)rgba;
|
||||
int i = 0;
|
||||
if (alpha_first) {
|
||||
for (; i + 8 <= w; i += 8) {
|
||||
// load aaaa...|rrrr...|gggg...|bbbb...
|
||||
uint8x8x4_t RGBX = vld4_u8((const uint8_t*)(rgbx + i));
|
||||
MULTIPLY_BY_ALPHA(RGBX, 0, 3);
|
||||
vst4_u8((uint8_t*)(rgbx + i), RGBX);
|
||||
}
|
||||
} else {
|
||||
for (; i + 8 <= w; i += 8) {
|
||||
uint8x8x4_t RGBX = vld4_u8((const uint8_t*)(rgbx + i));
|
||||
MULTIPLY_BY_ALPHA(RGBX, 3, 0);
|
||||
vst4_u8((uint8_t*)(rgbx + i), RGBX);
|
||||
}
|
||||
}
|
||||
// Finish with left-overs.
|
||||
for (; i < w; ++i) {
|
||||
uint8_t* const rgb = rgba + (alpha_first ? 1 : 0);
|
||||
const uint8_t* const alpha = rgba + (alpha_first ? 0 : 3);
|
||||
const uint32_t a = alpha[4 * i];
|
||||
if (a != 0xff) {
|
||||
const uint32_t mult = MULTIPLIER(a);
|
||||
rgb[4 * i + 0] = PREMULTIPLY(rgb[4 * i + 0], mult);
|
||||
rgb[4 * i + 1] = PREMULTIPLY(rgb[4 * i + 1], mult);
|
||||
rgb[4 * i + 2] = PREMULTIPLY(rgb[4 * i + 2], mult);
|
||||
}
|
||||
}
|
||||
rgba += stride;
|
||||
}
|
||||
}
|
||||
#undef MULTIPLY_BY_ALPHA
|
||||
#undef MULTIPLIER
|
||||
#undef PREMULTIPLY
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
static int DispatchAlpha_NEON(const uint8_t* alpha, int alpha_stride,
|
||||
int width, int height,
|
||||
uint8_t* dst, int dst_stride) {
|
||||
uint32_t alpha_mask = 0xffffffffu;
|
||||
uint8x8_t mask8 = vdup_n_u8(0xff);
|
||||
uint32_t tmp[2];
|
||||
int i, j;
|
||||
for (j = 0; j < height; ++j) {
|
||||
// We don't know if alpha is first or last in dst[] (depending on rgbA/Argb
|
||||
// mode). So we must be sure dst[4*i + 8 - 1] is writable for the store.
|
||||
// Hence the test with 'width - 1' instead of just 'width'.
|
||||
for (i = 0; i + 8 <= width - 1; i += 8) {
|
||||
uint8x8x4_t rgbX = vld4_u8((const uint8_t*)(dst + 4 * i));
|
||||
const uint8x8_t alphas = vld1_u8(alpha + i);
|
||||
rgbX.val[0] = alphas;
|
||||
vst4_u8((uint8_t*)(dst + 4 * i), rgbX);
|
||||
mask8 = vand_u8(mask8, alphas);
|
||||
}
|
||||
for (; i < width; ++i) {
|
||||
const uint32_t alpha_value = alpha[i];
|
||||
dst[4 * i] = alpha_value;
|
||||
alpha_mask &= alpha_value;
|
||||
}
|
||||
alpha += alpha_stride;
|
||||
dst += dst_stride;
|
||||
}
|
||||
vst1_u8((uint8_t*)tmp, mask8);
|
||||
alpha_mask &= tmp[0];
|
||||
alpha_mask &= tmp[1];
|
||||
return (alpha_mask != 0xffffffffu);
|
||||
}
|
||||
|
||||
static void DispatchAlphaToGreen_NEON(const uint8_t* alpha, int alpha_stride,
|
||||
int width, int height,
|
||||
uint32_t* dst, int dst_stride) {
|
||||
int i, j;
|
||||
uint8x8x4_t greens; // leave A/R/B channels zero'd.
|
||||
greens.val[0] = vdup_n_u8(0);
|
||||
greens.val[2] = vdup_n_u8(0);
|
||||
greens.val[3] = vdup_n_u8(0);
|
||||
for (j = 0; j < height; ++j) {
|
||||
for (i = 0; i + 8 <= width; i += 8) {
|
||||
greens.val[1] = vld1_u8(alpha + i);
|
||||
vst4_u8((uint8_t*)(dst + i), greens);
|
||||
}
|
||||
for (; i < width; ++i) dst[i] = alpha[i] << 8;
|
||||
alpha += alpha_stride;
|
||||
dst += dst_stride;
|
||||
}
|
||||
}
|
||||
|
||||
static int ExtractAlpha_NEON(const uint8_t* argb, int argb_stride,
|
||||
int width, int height,
|
||||
uint8_t* alpha, int alpha_stride) {
|
||||
uint32_t alpha_mask = 0xffffffffu;
|
||||
uint8x8_t mask8 = vdup_n_u8(0xff);
|
||||
uint32_t tmp[2];
|
||||
int i, j;
|
||||
for (j = 0; j < height; ++j) {
|
||||
// We don't know if alpha is first or last in dst[] (depending on rgbA/Argb
|
||||
// mode). So we must be sure dst[4*i + 8 - 1] is writable for the store.
|
||||
// Hence the test with 'width - 1' instead of just 'width'.
|
||||
for (i = 0; i + 8 <= width - 1; i += 8) {
|
||||
const uint8x8x4_t rgbX = vld4_u8((const uint8_t*)(argb + 4 * i));
|
||||
const uint8x8_t alphas = rgbX.val[0];
|
||||
vst1_u8((uint8_t*)(alpha + i), alphas);
|
||||
mask8 = vand_u8(mask8, alphas);
|
||||
}
|
||||
for (; i < width; ++i) {
|
||||
alpha[i] = argb[4 * i];
|
||||
alpha_mask &= alpha[i];
|
||||
}
|
||||
argb += argb_stride;
|
||||
alpha += alpha_stride;
|
||||
}
|
||||
vst1_u8((uint8_t*)tmp, mask8);
|
||||
alpha_mask &= tmp[0];
|
||||
alpha_mask &= tmp[1];
|
||||
return (alpha_mask == 0xffffffffu);
|
||||
}
|
||||
|
||||
static void ExtractGreen_NEON(const uint32_t* argb,
|
||||
uint8_t* alpha, int size) {
|
||||
int i;
|
||||
for (i = 0; i + 16 <= size; i += 16) {
|
||||
const uint8x16x4_t rgbX = vld4q_u8((const uint8_t*)(argb + i));
|
||||
const uint8x16_t greens = rgbX.val[1];
|
||||
vst1q_u8(alpha + i, greens);
|
||||
}
|
||||
for (; i < size; ++i) alpha[i] = (argb[i] >> 8) & 0xff;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
extern void WebPInitAlphaProcessingNEON(void);
|
||||
|
||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitAlphaProcessingNEON(void) {
|
||||
WebPApplyAlphaMultiply = ApplyAlphaMultiply_NEON;
|
||||
WebPDispatchAlpha = DispatchAlpha_NEON;
|
||||
WebPDispatchAlphaToGreen = DispatchAlphaToGreen_NEON;
|
||||
WebPExtractAlpha = ExtractAlpha_NEON;
|
||||
WebPExtractGreen = ExtractGreen_NEON;
|
||||
}
|
||||
|
||||
#else // !WEBP_USE_NEON
|
||||
|
||||
WEBP_DSP_INIT_STUB(WebPInitAlphaProcessingNEON)
|
||||
|
||||
#endif // WEBP_USE_NEON
|
||||
329
media/libwebp/dsp/filters_neon.c
Normal file
329
media/libwebp/dsp/filters_neon.c
Normal file
|
|
@ -0,0 +1,329 @@
|
|||
// Copyright 2017 Google Inc. All Rights Reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
// that can be found in the COPYING file in the root of the source
|
||||
// tree. An additional intellectual property rights grant can be found
|
||||
// in the file PATENTS. All contributing project authors may
|
||||
// be found in the AUTHORS file in the root of the source tree.
|
||||
// -----------------------------------------------------------------------------
|
||||
//
|
||||
// NEON variant of alpha filters
|
||||
//
|
||||
// Author: Skal (pascal.massimino@gmail.com)
|
||||
|
||||
#include "../dsp/dsp.h"
|
||||
|
||||
#if defined(WEBP_USE_NEON)
|
||||
|
||||
#include <assert.h>
|
||||
#include "../dsp/neon.h"
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Helpful macros.
|
||||
|
||||
# define SANITY_CHECK(in, out) \
|
||||
assert(in != NULL); \
|
||||
assert(out != NULL); \
|
||||
assert(width > 0); \
|
||||
assert(height > 0); \
|
||||
assert(stride >= width); \
|
||||
assert(row >= 0 && num_rows > 0 && row + num_rows <= height); \
|
||||
(void)height; // Silence unused warning.
|
||||
|
||||
// load eight u8 and widen to s16
|
||||
#define U8_TO_S16(A) vreinterpretq_s16_u16(vmovl_u8(A))
|
||||
#define LOAD_U8_TO_S16(A) U8_TO_S16(vld1_u8(A))
|
||||
|
||||
// shift left or right by N byte, inserting zeros
|
||||
#define SHIFT_RIGHT_N_Q(A, N) vextq_u8((A), zero, (N))
|
||||
#define SHIFT_LEFT_N_Q(A, N) vextq_u8(zero, (A), (16 - (N)) % 16)
|
||||
|
||||
// rotate left by N bytes
|
||||
#define ROTATE_LEFT_N(A, N) vext_u8((A), (A), (N))
|
||||
// rotate right by N bytes
|
||||
#define ROTATE_RIGHT_N(A, N) vext_u8((A), (A), (8 - (N)) % 8)
|
||||
|
||||
static void PredictLine_NEON(const uint8_t* src, const uint8_t* pred,
|
||||
uint8_t* dst, int length) {
|
||||
int i;
|
||||
assert(length >= 0);
|
||||
for (i = 0; i + 16 <= length; i += 16) {
|
||||
const uint8x16_t A = vld1q_u8(&src[i]);
|
||||
const uint8x16_t B = vld1q_u8(&pred[i]);
|
||||
const uint8x16_t C = vsubq_u8(A, B);
|
||||
vst1q_u8(&dst[i], C);
|
||||
}
|
||||
for (; i < length; ++i) dst[i] = src[i] - pred[i];
|
||||
}
|
||||
|
||||
// Special case for left-based prediction (when preds==dst-1 or preds==src-1).
|
||||
static void PredictLineLeft_NEON(const uint8_t* src, uint8_t* dst, int length) {
|
||||
PredictLine_NEON(src, src - 1, dst, length);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Horizontal filter.
|
||||
|
||||
static WEBP_INLINE void DoHorizontalFilter_NEON(const uint8_t* in,
|
||||
int width, int height,
|
||||
int stride,
|
||||
int row, int num_rows,
|
||||
uint8_t* out) {
|
||||
const size_t start_offset = row * stride;
|
||||
const int last_row = row + num_rows;
|
||||
SANITY_CHECK(in, out);
|
||||
in += start_offset;
|
||||
out += start_offset;
|
||||
|
||||
if (row == 0) {
|
||||
// Leftmost pixel is the same as input for topmost scanline.
|
||||
out[0] = in[0];
|
||||
PredictLineLeft_NEON(in + 1, out + 1, width - 1);
|
||||
row = 1;
|
||||
in += stride;
|
||||
out += stride;
|
||||
}
|
||||
|
||||
// Filter line-by-line.
|
||||
while (row < last_row) {
|
||||
// Leftmost pixel is predicted from above.
|
||||
out[0] = in[0] - in[-stride];
|
||||
PredictLineLeft_NEON(in + 1, out + 1, width - 1);
|
||||
++row;
|
||||
in += stride;
|
||||
out += stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void HorizontalFilter_NEON(const uint8_t* data, int width, int height,
|
||||
int stride, uint8_t* filtered_data) {
|
||||
DoHorizontalFilter_NEON(data, width, height, stride, 0, height,
|
||||
filtered_data);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Vertical filter.
|
||||
|
||||
static WEBP_INLINE void DoVerticalFilter_NEON(const uint8_t* in,
|
||||
int width, int height, int stride,
|
||||
int row, int num_rows,
|
||||
uint8_t* out) {
|
||||
const size_t start_offset = row * stride;
|
||||
const int last_row = row + num_rows;
|
||||
SANITY_CHECK(in, out);
|
||||
in += start_offset;
|
||||
out += start_offset;
|
||||
|
||||
if (row == 0) {
|
||||
// Very first top-left pixel is copied.
|
||||
out[0] = in[0];
|
||||
// Rest of top scan-line is left-predicted.
|
||||
PredictLineLeft_NEON(in + 1, out + 1, width - 1);
|
||||
row = 1;
|
||||
in += stride;
|
||||
out += stride;
|
||||
}
|
||||
|
||||
// Filter line-by-line.
|
||||
while (row < last_row) {
|
||||
PredictLine_NEON(in, in - stride, out, width);
|
||||
++row;
|
||||
in += stride;
|
||||
out += stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void VerticalFilter_NEON(const uint8_t* data, int width, int height,
|
||||
int stride, uint8_t* filtered_data) {
|
||||
DoVerticalFilter_NEON(data, width, height, stride, 0, height,
|
||||
filtered_data);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Gradient filter.
|
||||
|
||||
static WEBP_INLINE int GradientPredictor_C(uint8_t a, uint8_t b, uint8_t c) {
|
||||
const int g = a + b - c;
|
||||
return ((g & ~0xff) == 0) ? g : (g < 0) ? 0 : 255; // clip to 8bit
|
||||
}
|
||||
|
||||
static void GradientPredictDirect_NEON(const uint8_t* const row,
|
||||
const uint8_t* const top,
|
||||
uint8_t* const out, int length) {
|
||||
int i;
|
||||
for (i = 0; i + 8 <= length; i += 8) {
|
||||
const uint8x8_t A = vld1_u8(&row[i - 1]);
|
||||
const uint8x8_t B = vld1_u8(&top[i + 0]);
|
||||
const int16x8_t C = vreinterpretq_s16_u16(vaddl_u8(A, B));
|
||||
const int16x8_t D = LOAD_U8_TO_S16(&top[i - 1]);
|
||||
const uint8x8_t E = vqmovun_s16(vsubq_s16(C, D));
|
||||
const uint8x8_t F = vld1_u8(&row[i + 0]);
|
||||
vst1_u8(&out[i], vsub_u8(F, E));
|
||||
}
|
||||
for (; i < length; ++i) {
|
||||
out[i] = row[i] - GradientPredictor_C(row[i - 1], top[i], top[i - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
static WEBP_INLINE void DoGradientFilter_NEON(const uint8_t* in,
|
||||
int width, int height,
|
||||
int stride,
|
||||
int row, int num_rows,
|
||||
uint8_t* out) {
|
||||
const size_t start_offset = row * stride;
|
||||
const int last_row = row + num_rows;
|
||||
SANITY_CHECK(in, out);
|
||||
in += start_offset;
|
||||
out += start_offset;
|
||||
|
||||
// left prediction for top scan-line
|
||||
if (row == 0) {
|
||||
out[0] = in[0];
|
||||
PredictLineLeft_NEON(in + 1, out + 1, width - 1);
|
||||
row = 1;
|
||||
in += stride;
|
||||
out += stride;
|
||||
}
|
||||
|
||||
// Filter line-by-line.
|
||||
while (row < last_row) {
|
||||
out[0] = in[0] - in[-stride];
|
||||
GradientPredictDirect_NEON(in + 1, in + 1 - stride, out + 1, width - 1);
|
||||
++row;
|
||||
in += stride;
|
||||
out += stride;
|
||||
}
|
||||
}
|
||||
|
||||
static void GradientFilter_NEON(const uint8_t* data, int width, int height,
|
||||
int stride, uint8_t* filtered_data) {
|
||||
DoGradientFilter_NEON(data, width, height, stride, 0, height,
|
||||
filtered_data);
|
||||
}
|
||||
|
||||
#undef SANITY_CHECK
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Inverse transforms
|
||||
|
||||
static void HorizontalUnfilter_NEON(const uint8_t* prev, const uint8_t* in,
|
||||
uint8_t* out, int width) {
|
||||
int i;
|
||||
const uint8x16_t zero = vdupq_n_u8(0);
|
||||
uint8x16_t last;
|
||||
out[0] = in[0] + (prev == NULL ? 0 : prev[0]);
|
||||
if (width <= 1) return;
|
||||
last = vsetq_lane_u8(out[0], zero, 0);
|
||||
for (i = 1; i + 16 <= width; i += 16) {
|
||||
const uint8x16_t A0 = vld1q_u8(&in[i]);
|
||||
const uint8x16_t A1 = vaddq_u8(A0, last);
|
||||
const uint8x16_t A2 = SHIFT_LEFT_N_Q(A1, 1);
|
||||
const uint8x16_t A3 = vaddq_u8(A1, A2);
|
||||
const uint8x16_t A4 = SHIFT_LEFT_N_Q(A3, 2);
|
||||
const uint8x16_t A5 = vaddq_u8(A3, A4);
|
||||
const uint8x16_t A6 = SHIFT_LEFT_N_Q(A5, 4);
|
||||
const uint8x16_t A7 = vaddq_u8(A5, A6);
|
||||
const uint8x16_t A8 = SHIFT_LEFT_N_Q(A7, 8);
|
||||
const uint8x16_t A9 = vaddq_u8(A7, A8);
|
||||
vst1q_u8(&out[i], A9);
|
||||
last = SHIFT_RIGHT_N_Q(A9, 15);
|
||||
}
|
||||
for (; i < width; ++i) out[i] = in[i] + out[i - 1];
|
||||
}
|
||||
|
||||
static void VerticalUnfilter_NEON(const uint8_t* prev, const uint8_t* in,
|
||||
uint8_t* out, int width) {
|
||||
if (prev == NULL) {
|
||||
HorizontalUnfilter_NEON(NULL, in, out, width);
|
||||
} else {
|
||||
int i;
|
||||
assert(width >= 0);
|
||||
for (i = 0; i + 16 <= width; i += 16) {
|
||||
const uint8x16_t A = vld1q_u8(&in[i]);
|
||||
const uint8x16_t B = vld1q_u8(&prev[i]);
|
||||
const uint8x16_t C = vaddq_u8(A, B);
|
||||
vst1q_u8(&out[i], C);
|
||||
}
|
||||
for (; i < width; ++i) out[i] = in[i] + prev[i];
|
||||
}
|
||||
}
|
||||
|
||||
// GradientUnfilter_NEON is correct but slower than the C-version,
|
||||
// at least on ARM64. For armv7, it's a wash.
|
||||
// So best is to disable it for now, but keep the idea around...
|
||||
#if !defined(USE_GRADIENT_UNFILTER)
|
||||
#define USE_GRADIENT_UNFILTER 0 // ALTERNATE_CODE
|
||||
#endif
|
||||
|
||||
#if (USE_GRADIENT_UNFILTER == 1)
|
||||
#define GRAD_PROCESS_LANE(L) do { \
|
||||
const uint8x8_t tmp1 = ROTATE_RIGHT_N(pred, 1); /* rotate predictor in */ \
|
||||
const int16x8_t tmp2 = vaddq_s16(BC, U8_TO_S16(tmp1)); \
|
||||
const uint8x8_t delta = vqmovun_s16(tmp2); \
|
||||
pred = vadd_u8(D, delta); \
|
||||
out = vext_u8(out, ROTATE_LEFT_N(pred, (L)), 1); \
|
||||
} while (0)
|
||||
|
||||
static void GradientPredictInverse_NEON(const uint8_t* const in,
|
||||
const uint8_t* const top,
|
||||
uint8_t* const row, int length) {
|
||||
if (length > 0) {
|
||||
int i;
|
||||
uint8x8_t pred = vdup_n_u8(row[-1]); // left sample
|
||||
uint8x8_t out = vdup_n_u8(0);
|
||||
for (i = 0; i + 8 <= length; i += 8) {
|
||||
const int16x8_t B = LOAD_U8_TO_S16(&top[i + 0]);
|
||||
const int16x8_t C = LOAD_U8_TO_S16(&top[i - 1]);
|
||||
const int16x8_t BC = vsubq_s16(B, C); // unclipped gradient basis B - C
|
||||
const uint8x8_t D = vld1_u8(&in[i]); // base input
|
||||
GRAD_PROCESS_LANE(0);
|
||||
GRAD_PROCESS_LANE(1);
|
||||
GRAD_PROCESS_LANE(2);
|
||||
GRAD_PROCESS_LANE(3);
|
||||
GRAD_PROCESS_LANE(4);
|
||||
GRAD_PROCESS_LANE(5);
|
||||
GRAD_PROCESS_LANE(6);
|
||||
GRAD_PROCESS_LANE(7);
|
||||
vst1_u8(&row[i], out);
|
||||
}
|
||||
for (; i < length; ++i) {
|
||||
row[i] = in[i] + GradientPredictor_C(row[i - 1], top[i], top[i - 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef GRAD_PROCESS_LANE
|
||||
|
||||
static void GradientUnfilter_NEON(const uint8_t* prev, const uint8_t* in,
|
||||
uint8_t* out, int width) {
|
||||
if (prev == NULL) {
|
||||
HorizontalUnfilter_NEON(NULL, in, out, width);
|
||||
} else {
|
||||
out[0] = in[0] + prev[0]; // predict from above
|
||||
GradientPredictInverse_NEON(in + 1, prev + 1, out + 1, width - 1);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // USE_GRADIENT_UNFILTER
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Entry point
|
||||
|
||||
extern void VP8FiltersInitNEON(void);
|
||||
|
||||
WEBP_TSAN_IGNORE_FUNCTION void VP8FiltersInitNEON(void) {
|
||||
WebPUnfilters[WEBP_FILTER_HORIZONTAL] = HorizontalUnfilter_NEON;
|
||||
WebPUnfilters[WEBP_FILTER_VERTICAL] = VerticalUnfilter_NEON;
|
||||
#if (USE_GRADIENT_UNFILTER == 1)
|
||||
WebPUnfilters[WEBP_FILTER_GRADIENT] = GradientUnfilter_NEON;
|
||||
#endif
|
||||
|
||||
WebPFilters[WEBP_FILTER_HORIZONTAL] = HorizontalFilter_NEON;
|
||||
WebPFilters[WEBP_FILTER_VERTICAL] = VerticalFilter_NEON;
|
||||
WebPFilters[WEBP_FILTER_GRADIENT] = GradientFilter_NEON;
|
||||
}
|
||||
|
||||
#else // !WEBP_USE_NEON
|
||||
|
||||
WEBP_DSP_INIT_STUB(VP8FiltersInitNEON)
|
||||
|
||||
#endif // WEBP_USE_NEON
|
||||
|
|
@ -9,6 +9,7 @@ with Files('**'):
|
|||
|
||||
SOURCES += [
|
||||
'alpha_processing.c',
|
||||
'alpha_processing_neon.c',
|
||||
'alpha_processing_sse2.c',
|
||||
'alpha_processing_sse41.c',
|
||||
'dec.c',
|
||||
|
|
@ -17,6 +18,7 @@ SOURCES += [
|
|||
'dec_sse2.c',
|
||||
'dec_sse41.c',
|
||||
'filters.c',
|
||||
'filters_neon.c',
|
||||
'filters_sse2.c',
|
||||
'lossless.c',
|
||||
'lossless_neon.c',
|
||||
|
|
@ -29,15 +31,19 @@ SOURCES += [
|
|||
'upsampling_sse2.c',
|
||||
'upsampling_sse41.c',
|
||||
'yuv.c',
|
||||
'yuv_neon.c',
|
||||
'yuv_sse2.c',
|
||||
'yuv_sse41.c',
|
||||
]
|
||||
|
||||
if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']:
|
||||
SOURCES['alpha_processing_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
SOURCES['dec_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
SOURCES['filters_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
SOURCES['lossless_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
SOURCES['rescaler_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
SOURCES['upsampling_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
SOURCES['yuv_neon.c'].flags += CONFIG['NEON_FLAGS']
|
||||
elif CONFIG['INTEL_ARCHITECTURE']:
|
||||
SOURCES['alpha_processing_sse2.c'].flags += CONFIG['SSE2_FLAGS']
|
||||
SOURCES['alpha_processing_sse41.c'].flags += CONFIG['SSE2_FLAGS']
|
||||
|
|
|
|||
288
media/libwebp/dsp/yuv_neon.c
Normal file
288
media/libwebp/dsp/yuv_neon.c
Normal file
|
|
@ -0,0 +1,288 @@
|
|||
// Copyright 2017 Google Inc. All Rights Reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license
|
||||
// that can be found in the COPYING file in the root of the source
|
||||
// tree. An additional intellectual property rights grant can be found
|
||||
// in the file PATENTS. All contributing project authors may
|
||||
// be found in the AUTHORS file in the root of the source tree.
|
||||
// -----------------------------------------------------------------------------
|
||||
//
|
||||
// YUV->RGB conversion functions
|
||||
//
|
||||
// Author: Skal (pascal.massimino@gmail.com)
|
||||
|
||||
#include "../dsp/yuv.h"
|
||||
|
||||
#if defined(WEBP_USE_NEON)
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../dsp/neon.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static uint8x8_t ConvertRGBToY_NEON(const uint8x8_t R,
|
||||
const uint8x8_t G,
|
||||
const uint8x8_t B) {
|
||||
const uint16x8_t r = vmovl_u8(R);
|
||||
const uint16x8_t g = vmovl_u8(G);
|
||||
const uint16x8_t b = vmovl_u8(B);
|
||||
const uint16x4_t r_lo = vget_low_u16(r);
|
||||
const uint16x4_t r_hi = vget_high_u16(r);
|
||||
const uint16x4_t g_lo = vget_low_u16(g);
|
||||
const uint16x4_t g_hi = vget_high_u16(g);
|
||||
const uint16x4_t b_lo = vget_low_u16(b);
|
||||
const uint16x4_t b_hi = vget_high_u16(b);
|
||||
const uint32x4_t tmp0_lo = vmull_n_u16( r_lo, 16839u);
|
||||
const uint32x4_t tmp0_hi = vmull_n_u16( r_hi, 16839u);
|
||||
const uint32x4_t tmp1_lo = vmlal_n_u16(tmp0_lo, g_lo, 33059u);
|
||||
const uint32x4_t tmp1_hi = vmlal_n_u16(tmp0_hi, g_hi, 33059u);
|
||||
const uint32x4_t tmp2_lo = vmlal_n_u16(tmp1_lo, b_lo, 6420u);
|
||||
const uint32x4_t tmp2_hi = vmlal_n_u16(tmp1_hi, b_hi, 6420u);
|
||||
const uint16x8_t Y1 = vcombine_u16(vrshrn_n_u32(tmp2_lo, 16),
|
||||
vrshrn_n_u32(tmp2_hi, 16));
|
||||
const uint16x8_t Y2 = vaddq_u16(Y1, vdupq_n_u16(16));
|
||||
return vqmovn_u16(Y2);
|
||||
}
|
||||
|
||||
static void ConvertRGB24ToY_NEON(const uint8_t* rgb, uint8_t* y, int width) {
|
||||
int i;
|
||||
for (i = 0; i + 8 <= width; i += 8, rgb += 3 * 8) {
|
||||
const uint8x8x3_t RGB = vld3_u8(rgb);
|
||||
const uint8x8_t Y = ConvertRGBToY_NEON(RGB.val[0], RGB.val[1], RGB.val[2]);
|
||||
vst1_u8(y + i, Y);
|
||||
}
|
||||
for (; i < width; ++i, rgb += 3) { // left-over
|
||||
y[i] = VP8RGBToY(rgb[0], rgb[1], rgb[2], YUV_HALF);
|
||||
}
|
||||
}
|
||||
|
||||
static void ConvertBGR24ToY_NEON(const uint8_t* bgr, uint8_t* y, int width) {
|
||||
int i;
|
||||
for (i = 0; i + 8 <= width; i += 8, bgr += 3 * 8) {
|
||||
const uint8x8x3_t BGR = vld3_u8(bgr);
|
||||
const uint8x8_t Y = ConvertRGBToY_NEON(BGR.val[2], BGR.val[1], BGR.val[0]);
|
||||
vst1_u8(y + i, Y);
|
||||
}
|
||||
for (; i < width; ++i, bgr += 3) { // left-over
|
||||
y[i] = VP8RGBToY(bgr[2], bgr[1], bgr[0], YUV_HALF);
|
||||
}
|
||||
}
|
||||
|
||||
static void ConvertARGBToY_NEON(const uint32_t* argb, uint8_t* y, int width) {
|
||||
int i;
|
||||
for (i = 0; i + 8 <= width; i += 8) {
|
||||
const uint8x8x4_t RGB = vld4_u8((const uint8_t*)&argb[i]);
|
||||
const uint8x8_t Y = ConvertRGBToY_NEON(RGB.val[2], RGB.val[1], RGB.val[0]);
|
||||
vst1_u8(y + i, Y);
|
||||
}
|
||||
for (; i < width; ++i) { // left-over
|
||||
const uint32_t p = argb[i];
|
||||
y[i] = VP8RGBToY((p >> 16) & 0xff, (p >> 8) & 0xff, (p >> 0) & 0xff,
|
||||
YUV_HALF);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// computes: DST_s16 = [(C0 * r + C1 * g + C2 * b) >> 16] + CST
|
||||
#define MULTIPLY_16b_PREAMBLE(r, g, b) \
|
||||
const int16x4_t r_lo = vreinterpret_s16_u16(vget_low_u16(r)); \
|
||||
const int16x4_t r_hi = vreinterpret_s16_u16(vget_high_u16(r)); \
|
||||
const int16x4_t g_lo = vreinterpret_s16_u16(vget_low_u16(g)); \
|
||||
const int16x4_t g_hi = vreinterpret_s16_u16(vget_high_u16(g)); \
|
||||
const int16x4_t b_lo = vreinterpret_s16_u16(vget_low_u16(b)); \
|
||||
const int16x4_t b_hi = vreinterpret_s16_u16(vget_high_u16(b))
|
||||
|
||||
#define MULTIPLY_16b(C0, C1, C2, CST, DST_s16) do { \
|
||||
const int32x4_t tmp0_lo = vmull_n_s16( r_lo, C0); \
|
||||
const int32x4_t tmp0_hi = vmull_n_s16( r_hi, C0); \
|
||||
const int32x4_t tmp1_lo = vmlal_n_s16(tmp0_lo, g_lo, C1); \
|
||||
const int32x4_t tmp1_hi = vmlal_n_s16(tmp0_hi, g_hi, C1); \
|
||||
const int32x4_t tmp2_lo = vmlal_n_s16(tmp1_lo, b_lo, C2); \
|
||||
const int32x4_t tmp2_hi = vmlal_n_s16(tmp1_hi, b_hi, C2); \
|
||||
const int16x8_t tmp3 = vcombine_s16(vshrn_n_s32(tmp2_lo, 16), \
|
||||
vshrn_n_s32(tmp2_hi, 16)); \
|
||||
DST_s16 = vaddq_s16(tmp3, vdupq_n_s16(CST)); \
|
||||
} while (0)
|
||||
|
||||
// This needs to be a macro, since (128 << SHIFT) needs to be an immediate.
|
||||
#define CONVERT_RGB_TO_UV(r, g, b, SHIFT, U_DST, V_DST) do { \
|
||||
MULTIPLY_16b_PREAMBLE(r, g, b); \
|
||||
MULTIPLY_16b(-9719, -19081, 28800, 128 << SHIFT, U_DST); \
|
||||
MULTIPLY_16b(28800, -24116, -4684, 128 << SHIFT, V_DST); \
|
||||
} while (0)
|
||||
|
||||
static void ConvertRGBA32ToUV_NEON(const uint16_t* rgb,
|
||||
uint8_t* u, uint8_t* v, int width) {
|
||||
int i;
|
||||
for (i = 0; i + 8 <= width; i += 8, rgb += 4 * 8) {
|
||||
const uint16x8x4_t RGB = vld4q_u16((const uint16_t*)rgb);
|
||||
int16x8_t U, V;
|
||||
CONVERT_RGB_TO_UV(RGB.val[0], RGB.val[1], RGB.val[2], 2, U, V);
|
||||
vst1_u8(u + i, vqrshrun_n_s16(U, 2));
|
||||
vst1_u8(v + i, vqrshrun_n_s16(V, 2));
|
||||
}
|
||||
for (; i < width; i += 1, rgb += 4) {
|
||||
const int r = rgb[0], g = rgb[1], b = rgb[2];
|
||||
u[i] = VP8RGBToU(r, g, b, YUV_HALF << 2);
|
||||
v[i] = VP8RGBToV(r, g, b, YUV_HALF << 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void ConvertARGBToUV_NEON(const uint32_t* argb, uint8_t* u, uint8_t* v,
|
||||
int src_width, int do_store) {
|
||||
int i;
|
||||
for (i = 0; i + 16 <= src_width; i += 16, u += 8, v += 8) {
|
||||
const uint8x16x4_t RGB = vld4q_u8((const uint8_t*)&argb[i]);
|
||||
const uint16x8_t R = vpaddlq_u8(RGB.val[2]); // pair-wise adds
|
||||
const uint16x8_t G = vpaddlq_u8(RGB.val[1]);
|
||||
const uint16x8_t B = vpaddlq_u8(RGB.val[0]);
|
||||
int16x8_t U_tmp, V_tmp;
|
||||
CONVERT_RGB_TO_UV(R, G, B, 1, U_tmp, V_tmp);
|
||||
{
|
||||
const uint8x8_t U = vqrshrun_n_s16(U_tmp, 1);
|
||||
const uint8x8_t V = vqrshrun_n_s16(V_tmp, 1);
|
||||
if (do_store) {
|
||||
vst1_u8(u, U);
|
||||
vst1_u8(v, V);
|
||||
} else {
|
||||
const uint8x8_t prev_u = vld1_u8(u);
|
||||
const uint8x8_t prev_v = vld1_u8(v);
|
||||
vst1_u8(u, vrhadd_u8(U, prev_u));
|
||||
vst1_u8(v, vrhadd_u8(V, prev_v));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i < src_width) { // left-over
|
||||
WebPConvertARGBToUV_C(argb + i, u, v, src_width - i, do_store);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
extern void WebPInitConvertARGBToYUVNEON(void);
|
||||
|
||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitConvertARGBToYUVNEON(void) {
|
||||
WebPConvertRGB24ToY = ConvertRGB24ToY_NEON;
|
||||
WebPConvertBGR24ToY = ConvertBGR24ToY_NEON;
|
||||
WebPConvertARGBToY = ConvertARGBToY_NEON;
|
||||
WebPConvertARGBToUV = ConvertARGBToUV_NEON;
|
||||
WebPConvertRGBA32ToUV = ConvertRGBA32ToUV_NEON;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#define MAX_Y ((1 << 10) - 1) // 10b precision over 16b-arithmetic
|
||||
static uint16_t clip_y_NEON(int v) {
|
||||
return (v < 0) ? 0 : (v > MAX_Y) ? MAX_Y : (uint16_t)v;
|
||||
}
|
||||
|
||||
static uint64_t SharpYUVUpdateY_NEON(const uint16_t* ref, const uint16_t* src,
|
||||
uint16_t* dst, int len) {
|
||||
int i;
|
||||
const int16x8_t zero = vdupq_n_s16(0);
|
||||
const int16x8_t max = vdupq_n_s16(MAX_Y);
|
||||
uint64x2_t sum = vdupq_n_u64(0);
|
||||
uint64_t diff;
|
||||
|
||||
for (i = 0; i + 8 <= len; i += 8) {
|
||||
const int16x8_t A = vreinterpretq_s16_u16(vld1q_u16(ref + i));
|
||||
const int16x8_t B = vreinterpretq_s16_u16(vld1q_u16(src + i));
|
||||
const int16x8_t C = vreinterpretq_s16_u16(vld1q_u16(dst + i));
|
||||
const int16x8_t D = vsubq_s16(A, B); // diff_y
|
||||
const int16x8_t F = vaddq_s16(C, D); // new_y
|
||||
const uint16x8_t H =
|
||||
vreinterpretq_u16_s16(vmaxq_s16(vminq_s16(F, max), zero));
|
||||
const int16x8_t I = vabsq_s16(D); // abs(diff_y)
|
||||
vst1q_u16(dst + i, H);
|
||||
sum = vpadalq_u32(sum, vpaddlq_u16(vreinterpretq_u16_s16(I)));
|
||||
}
|
||||
diff = vgetq_lane_u64(sum, 0) + vgetq_lane_u64(sum, 1);
|
||||
for (; i < len; ++i) {
|
||||
const int diff_y = ref[i] - src[i];
|
||||
const int new_y = (int)(dst[i]) + diff_y;
|
||||
dst[i] = clip_y_NEON(new_y);
|
||||
diff += (uint64_t)(abs(diff_y));
|
||||
}
|
||||
return diff;
|
||||
}
|
||||
|
||||
static void SharpYUVUpdateRGB_NEON(const int16_t* ref, const int16_t* src,
|
||||
int16_t* dst, int len) {
|
||||
int i;
|
||||
for (i = 0; i + 8 <= len; i += 8) {
|
||||
const int16x8_t A = vld1q_s16(ref + i);
|
||||
const int16x8_t B = vld1q_s16(src + i);
|
||||
const int16x8_t C = vld1q_s16(dst + i);
|
||||
const int16x8_t D = vsubq_s16(A, B); // diff_uv
|
||||
const int16x8_t E = vaddq_s16(C, D); // new_uv
|
||||
vst1q_s16(dst + i, E);
|
||||
}
|
||||
for (; i < len; ++i) {
|
||||
const int diff_uv = ref[i] - src[i];
|
||||
dst[i] += diff_uv;
|
||||
}
|
||||
}
|
||||
|
||||
static void SharpYUVFilterRow_NEON(const int16_t* A, const int16_t* B, int len,
|
||||
const uint16_t* best_y, uint16_t* out) {
|
||||
int i;
|
||||
const int16x8_t max = vdupq_n_s16(MAX_Y);
|
||||
const int16x8_t zero = vdupq_n_s16(0);
|
||||
for (i = 0; i + 8 <= len; i += 8) {
|
||||
const int16x8_t a0 = vld1q_s16(A + i + 0);
|
||||
const int16x8_t a1 = vld1q_s16(A + i + 1);
|
||||
const int16x8_t b0 = vld1q_s16(B + i + 0);
|
||||
const int16x8_t b1 = vld1q_s16(B + i + 1);
|
||||
const int16x8_t a0b1 = vaddq_s16(a0, b1);
|
||||
const int16x8_t a1b0 = vaddq_s16(a1, b0);
|
||||
const int16x8_t a0a1b0b1 = vaddq_s16(a0b1, a1b0); // A0+A1+B0+B1
|
||||
const int16x8_t a0b1_2 = vaddq_s16(a0b1, a0b1); // 2*(A0+B1)
|
||||
const int16x8_t a1b0_2 = vaddq_s16(a1b0, a1b0); // 2*(A1+B0)
|
||||
const int16x8_t c0 = vshrq_n_s16(vaddq_s16(a0b1_2, a0a1b0b1), 3);
|
||||
const int16x8_t c1 = vshrq_n_s16(vaddq_s16(a1b0_2, a0a1b0b1), 3);
|
||||
const int16x8_t d0 = vaddq_s16(c1, a0);
|
||||
const int16x8_t d1 = vaddq_s16(c0, a1);
|
||||
const int16x8_t e0 = vrshrq_n_s16(d0, 1);
|
||||
const int16x8_t e1 = vrshrq_n_s16(d1, 1);
|
||||
const int16x8x2_t f = vzipq_s16(e0, e1);
|
||||
const int16x8_t g0 = vreinterpretq_s16_u16(vld1q_u16(best_y + 2 * i + 0));
|
||||
const int16x8_t g1 = vreinterpretq_s16_u16(vld1q_u16(best_y + 2 * i + 8));
|
||||
const int16x8_t h0 = vaddq_s16(g0, f.val[0]);
|
||||
const int16x8_t h1 = vaddq_s16(g1, f.val[1]);
|
||||
const int16x8_t i0 = vmaxq_s16(vminq_s16(h0, max), zero);
|
||||
const int16x8_t i1 = vmaxq_s16(vminq_s16(h1, max), zero);
|
||||
vst1q_u16(out + 2 * i + 0, vreinterpretq_u16_s16(i0));
|
||||
vst1q_u16(out + 2 * i + 8, vreinterpretq_u16_s16(i1));
|
||||
}
|
||||
for (; i < len; ++i) {
|
||||
const int a0b1 = A[i + 0] + B[i + 1];
|
||||
const int a1b0 = A[i + 1] + B[i + 0];
|
||||
const int a0a1b0b1 = a0b1 + a1b0 + 8;
|
||||
const int v0 = (8 * A[i + 0] + 2 * a1b0 + a0a1b0b1) >> 4;
|
||||
const int v1 = (8 * A[i + 1] + 2 * a0b1 + a0a1b0b1) >> 4;
|
||||
out[2 * i + 0] = clip_y_NEON(best_y[2 * i + 0] + v0);
|
||||
out[2 * i + 1] = clip_y_NEON(best_y[2 * i + 1] + v1);
|
||||
}
|
||||
}
|
||||
#undef MAX_Y
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
extern void WebPInitSharpYUVNEON(void);
|
||||
|
||||
WEBP_TSAN_IGNORE_FUNCTION void WebPInitSharpYUVNEON(void) {
|
||||
WebPSharpYUVUpdateY = SharpYUVUpdateY_NEON;
|
||||
WebPSharpYUVUpdateRGB = SharpYUVUpdateRGB_NEON;
|
||||
WebPSharpYUVFilterRow = SharpYUVFilterRow_NEON;
|
||||
}
|
||||
|
||||
#else // !WEBP_USE_NEON
|
||||
|
||||
WEBP_DSP_INIT_STUB(WebPInitConvertARGBToYUVNEON)
|
||||
WEBP_DSP_INIT_STUB(WebPInitSharpYUVNEON)
|
||||
|
||||
#endif // WEBP_USE_NEON
|
||||
|
|
@ -732,12 +732,19 @@ pref("gfx.layerscope.port", 23456);
|
|||
// This should be use to quickly find which slow paths are used by test cases.
|
||||
pref("gfx.perf-warnings.enabled", false);
|
||||
|
||||
// 0 = Off, 1 = Full, 2 = Tagged Images Only.
|
||||
// 0 = Off, 1 = All Images, 2 = Tagged Images Only.
|
||||
// See eCMSMode in gfx/thebes/gfxPlatform.h
|
||||
#ifdef XP_WIN
|
||||
pref("gfx.color_management.mode", 2);
|
||||
pref("gfx.color_management.display_profile", "");
|
||||
pref("gfx.color_management.rendering_intent", 0);
|
||||
pref("gfx.color_management.enablev4", true);
|
||||
#else
|
||||
pref("gfx.color_management.mode", 0);
|
||||
pref("gfx.color_management.display_profile", "");
|
||||
pref("gfx.color_management.rendering_intent", 0);
|
||||
pref("gfx.color_management.enablev4", false);
|
||||
#endif
|
||||
|
||||
pref("gfx.downloadable_fonts.enabled", true);
|
||||
pref("gfx.downloadable_fonts.fallback_delay", 3000);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue