Merge pull request #8893 from timvandermeij/annotations-css-dedup
Combine the common styles and overrides for the annotation layer reference tests
This commit is contained in:
commit
2916ed080d
31
test/annotation_layer_builder_overrides.css
Normal file
31
test/annotation_layer_builder_overrides.css
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright 2017 Mozilla Foundation
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Overrides to make the annotation layer visible for reference testing. */
|
||||||
|
|
||||||
|
.annotationLayer {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.annotationLayer .linkAnnotation > a {
|
||||||
|
opacity: 0.2;
|
||||||
|
background: #ff0;
|
||||||
|
box-shadow: 0px 2px 10px #ff0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.annotationLayer .popupAnnotation,
|
||||||
|
.annotationLayer .popupWrapper {
|
||||||
|
display: block;
|
||||||
|
}
|
@ -1,165 +0,0 @@
|
|||||||
/* Copyright 2015 Mozilla Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Used for annotation layer tests */
|
|
||||||
|
|
||||||
* {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer > section {
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .linkAnnotation > a {
|
|
||||||
position: absolute;
|
|
||||||
font-size: 1em;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
opacity: 0.2;
|
|
||||||
background: #ff0;
|
|
||||||
box-shadow: 0px 2px 10px #ff0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .textAnnotation img {
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .textWidgetAnnotation input,
|
|
||||||
.annotationLayer .textWidgetAnnotation textarea,
|
|
||||||
.annotationLayer .choiceWidgetAnnotation select,
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input,
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
|
||||||
background-color: rgba(0, 54, 255, 0.13);
|
|
||||||
border: 1px solid transparent;
|
|
||||||
box-sizing: border-box;
|
|
||||||
font-size: 9px;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0 3px;
|
|
||||||
vertical-align: top;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .textWidgetAnnotation textarea {
|
|
||||||
font: message-box;
|
|
||||||
font-size: 9px;
|
|
||||||
resize: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .textWidgetAnnotation input[disabled],
|
|
||||||
.annotationLayer .textWidgetAnnotation textarea[disabled],
|
|
||||||
.annotationLayer .choiceWidgetAnnotation select[disabled],
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled],
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] {
|
|
||||||
background: none;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {
|
|
||||||
background-color: #000;
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {
|
|
||||||
border-radius: 50%;
|
|
||||||
height: 50%;
|
|
||||||
left: 30%;
|
|
||||||
top: 20%;
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after {
|
|
||||||
height: 80%;
|
|
||||||
left: 45%;
|
|
||||||
width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before {
|
|
||||||
transform: rotate(45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after {
|
|
||||||
transform: rotate(-45deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .textWidgetAnnotation input.comb {
|
|
||||||
font-family: monospace;
|
|
||||||
padding-left: 2px;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.checkBox input,
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
-moz-appearance: none;
|
|
||||||
-ms-appearance: none;
|
|
||||||
appearance: none;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .popupAnnotation {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .popupWrapper {
|
|
||||||
display: block !important;
|
|
||||||
position: absolute;
|
|
||||||
width: 20em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .popup {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 200;
|
|
||||||
max-width: 20em;
|
|
||||||
background-color: #FFFF99;
|
|
||||||
box-shadow: 0px 2px 5px #333;
|
|
||||||
border-radius: 2px;
|
|
||||||
padding: 0.6em;
|
|
||||||
margin-left: 5px;
|
|
||||||
font: message-box;
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .popup h1 {
|
|
||||||
font-size: 1em;
|
|
||||||
border-bottom: 1px solid #000000;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 0.2em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.annotationLayer .popup p {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0.2em 0 0 0;
|
|
||||||
}
|
|
@ -133,22 +133,47 @@ var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
|
|||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
||||||
var SVG_NS = 'http://www.w3.org/2000/svg';
|
const SVG_NS = 'http://www.w3.org/2000/svg';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the reference tests, the entire annotation layer must be visible. To
|
||||||
|
* achieve this, we load the common styles as used by the viewer and extend
|
||||||
|
* them with a set of overrides to make all elements visible.
|
||||||
|
*
|
||||||
|
* Note that we cannot simply use `@import` to import the common styles in
|
||||||
|
* the overrides file because the browser does not resolve that when the
|
||||||
|
* styles are inserted via XHR. Therefore, we load and combine them here.
|
||||||
|
*/
|
||||||
|
let styles = {
|
||||||
|
common: {
|
||||||
|
file: '../web/annotation_layer_builder.css',
|
||||||
|
promise: null,
|
||||||
|
},
|
||||||
|
overrides: {
|
||||||
|
file: './annotation_layer_builder_overrides.css',
|
||||||
|
promise: null,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
var annotationLayerStylePromise = null;
|
|
||||||
function getAnnotationLayerStyle() {
|
function getAnnotationLayerStyle() {
|
||||||
if (annotationLayerStylePromise) {
|
// Use the cached promises if they are available.
|
||||||
return annotationLayerStylePromise;
|
if (styles.common.promise && styles.overrides.promise) {
|
||||||
|
return Promise.all([styles.common.promise, styles.overrides.promise]);
|
||||||
}
|
}
|
||||||
annotationLayerStylePromise = new Promise(function (resolve) {
|
|
||||||
var xhr = new XMLHttpRequest();
|
// Load the style files and cache the results.
|
||||||
xhr.open('GET', './annotation_layer_test.css');
|
for (let key in styles) {
|
||||||
xhr.onload = function () {
|
styles[key].promise = new Promise(function(resolve) {
|
||||||
|
let xhr = new XMLHttpRequest();
|
||||||
|
xhr.open('GET', styles[key].file);
|
||||||
|
xhr.onload = function() {
|
||||||
resolve(xhr.responseText);
|
resolve(xhr.responseText);
|
||||||
};
|
};
|
||||||
xhr.send(null);
|
xhr.send(null);
|
||||||
});
|
});
|
||||||
return annotationLayerStylePromise;
|
}
|
||||||
|
|
||||||
|
return Promise.all([styles.common.promise, styles.overrides.promise]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function inlineAnnotationImages(images) {
|
function inlineAnnotationImages(images) {
|
||||||
@ -196,8 +221,8 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
div.className = 'annotationLayer';
|
div.className = 'annotationLayer';
|
||||||
|
|
||||||
// Rendering annotation layer as HTML.
|
// Rendering annotation layer as HTML.
|
||||||
stylePromise.then(function (styles) {
|
stylePromise.then(function (common, overrides) {
|
||||||
style.textContent = styles;
|
style.textContent = common + overrides;
|
||||||
|
|
||||||
var annotation_viewport = viewport.clone({ dontFlip: true, });
|
var annotation_viewport = viewport.clone({ dontFlip: true, });
|
||||||
var parameters = {
|
var parameters = {
|
||||||
|
@ -51,11 +51,16 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
font-size: 9px;
|
font-size: 9px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
padding: 0 3px;
|
padding: 0 3px;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.annotationLayer .choiceWidgetAnnotation select option {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
@ -163,16 +168,19 @@
|
|||||||
padding: 0.6em;
|
padding: 0.6em;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
font: message-box;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.annotationLayer .popup h1 {
|
.annotationLayer .popup h1 {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
border-bottom: 1px solid #000000;
|
border-bottom: 1px solid #000000;
|
||||||
|
margin: 0;
|
||||||
padding-bottom: 0.2em;
|
padding-bottom: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.annotationLayer .popup p {
|
.annotationLayer .popup p {
|
||||||
|
margin: 0;
|
||||||
padding-top: 0.2em;
|
padding-top: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user