Skip to content

Commit

Permalink
Merge pull request #5362 from yurydelendik/css-import
Browse files Browse the repository at this point in the history
Use CSS import to separate pdfviewer styles
  • Loading branch information
Snuffleupagus committed Sep 30, 2014
2 parents 7059358 + 70a0935 commit a10fde1
Show file tree
Hide file tree
Showing 6 changed files with 231 additions and 162 deletions.
22 changes: 17 additions & 5 deletions external/builder/builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,15 @@ function preprocessCSS(mode, source, destination) {
deprecatedInMozcentral.test(line));
}

function expandImports(content, baseUrl) {
return content.replace(/^\s*@import\s+url\(([^\)]+)\);\s*$/gm,
function(all, url) {
var file = path.join(path.dirname(baseUrl), url);
var imported = fs.readFileSync(file, 'utf8').toString();
return expandImports(imported, file);
});
}

function removePrefixed(content, hasPrefixedFilter) {
var lines = content.split(/\r?\n/g);
var i = 0;
Expand Down Expand Up @@ -168,14 +177,17 @@ function preprocessCSS(mode, source, destination) {
return lines.join('\n');
}

if (mode !== 'firefox' && mode !== 'mozcentral') {
if (!mode) {
throw new Error('Invalid CSS preprocessor mode');
}

var content = fs.readFileSync(source, 'utf8');
var out = removePrefixed(content,
mode === 'mozcentral' ? hasPrefixedMozcentral : hasPrefixedFirefox);
fs.writeFileSync(destination, out);
var content = fs.readFileSync(source, 'utf8').toString();
content = expandImports(content, source);
if (mode === 'mozcentral' || mode === 'firefox') {
content = removePrefixed(content, mode === 'mozcentral' ?
hasPrefixedMozcentral : hasPrefixedFirefox);
}
fs.writeFileSync(destination, content);
}
exports.preprocessCSS = preprocessCSS;

Expand Down
31 changes: 28 additions & 3 deletions make.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ target.generic = function() {
[COMMON_WEB_FILES, GENERIC_DIR + '/web'],
['LICENSE', GENERIC_DIR],
['external/webL10n/l10n.js', GENERIC_DIR + '/web'],
['web/viewer.css', GENERIC_DIR + '/web'],
['web/compatibility.js', GENERIC_DIR + '/web'],
['web/compressed.tracemonkey-pldi-09.pdf', GENERIC_DIR + '/web'],
['external/bcmaps/*', GENERIC_DIR + '/web/cmaps/'],
Expand All @@ -135,11 +134,16 @@ target.generic = function() {
preprocess: [
[BUILD_TARGETS, GENERIC_DIR + BUILD_DIR],
[COMMON_WEB_FILES_PREPROCESS, GENERIC_DIR + '/web']
],
preprocessCSS: [
['generic', 'web/viewer.css',
GENERIC_DIR + '/web/viewer.css']
]
};
builder.build(setup);

cleanupJSSource(GENERIC_DIR + '/web/viewer.js');
cleanupCSSSource(GENERIC_DIR + '/web/viewer.css');
};

target.jsdoc = function() {
Expand Down Expand Up @@ -557,6 +561,16 @@ function cleanupJSSource(file) {
content.to(file);
}

function cleanupCSSSource(file) {
var content = cat(file);

// Strip out all license headers in the middle.
var reg = /\n\/\* Copyright(.|\n)*?Mozilla Foundation(.|\n)*?\*\//g;
content = content.replace(reg, '');

content.to(file);
}

//
// make minified
// Builds the minified production viewer that should be compatible with most
Expand Down Expand Up @@ -588,18 +602,23 @@ target.minified = function() {
defines: defines,
copy: [
[COMMON_WEB_FILES, MINIFIED_DIR + '/web'],
['web/viewer.css', MINIFIED_DIR + '/web'],
['web/compressed.tracemonkey-pldi-09.pdf', MINIFIED_DIR + '/web'],
['external/bcmaps/*', MINIFIED_DIR + '/web/cmaps'],
['web/locale', MINIFIED_DIR + '/web']
],
preprocess: [
[BUILD_TARGETS, MINIFIED_DIR + BUILD_DIR],
[COMMON_WEB_FILES_PREPROCESS, MINIFIED_DIR + '/web']
],
preprocessCSS: [
['minified', 'web/viewer.css',
MINIFIED_DIR + '/web/viewer.css']
]
};
builder.build(setup);

cleanupCSSSource(MINIFIED_DIR + '/web/viewer.css');

var viewerFiles = [
'web/compatibility.js',
'external/webL10n/l10n.js',
Expand Down Expand Up @@ -750,6 +769,7 @@ target.firefox = function() {
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.js');
cleanupJSSource(FIREFOX_BUILD_DIR + 'bootstrap.js');
cleanupJSSource(FIREFOX_BUILD_CONTENT_DIR + 'PdfjsChromeUtils.jsm');
cleanupCSSSource(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer.css');

// Remove '.DS_Store' and other hidden files
find(FIREFOX_BUILD_DIR).forEach(function(file) {
Expand Down Expand Up @@ -872,6 +892,7 @@ target.mozcentral = function() {
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.js');
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfJs.jsm');
cleanupJSSource(MOZCENTRAL_CONTENT_DIR + '/PdfjsChromeUtils.jsm');
cleanupCSSSource(MOZCENTRAL_CONTENT_DIR + '/web/viewer.css');

// Remove '.DS_Store' and other hidden files
find(MOZCENTRAL_DIR).forEach(function(file) {
Expand Down Expand Up @@ -982,18 +1003,22 @@ target.chromium = function() {
CHROME_BUILD_DIR],
['extensions/chromium/pageAction/*.*', CHROME_BUILD_DIR + '/pageAction'],
['external/webL10n/l10n.js', CHROME_BUILD_CONTENT_DIR + '/web'],
['web/viewer.css', CHROME_BUILD_CONTENT_DIR + '/web'],
['external/bcmaps/*', CHROME_BUILD_CONTENT_DIR + '/web/cmaps'],
['web/locale', CHROME_BUILD_CONTENT_DIR + '/web']
],
preprocess: [
[BUILD_TARGETS, CHROME_BUILD_CONTENT_DIR + BUILD_DIR],
[COMMON_WEB_FILES_PREPROCESS, CHROME_BUILD_CONTENT_DIR + '/web']
],
preprocessCSS: [
['chrome', 'web/viewer.css',
CHROME_BUILD_CONTENT_DIR + '/web/viewer.css']
]
};
builder.build(setup);

cleanupJSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.js');
cleanupCSSSource(CHROME_BUILD_CONTENT_DIR + '/web/viewer.css');

// Update the build version number
sed('-i', /PDFJSSCRIPT_VERSION/, VERSION,
Expand Down
123 changes: 123 additions & 0 deletions web/pdf_viewer.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/* Copyright 2014 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.
*/
@import url(text_layer_builder.css);

.pdfViewer .canvasWrapper {
overflow: hidden;
}

.pdfViewer .page {
direction: ltr;
width: 816px;
height: 1056px;
margin: 1px auto -8px auto;
position: relative;
overflow: visible;
border: 9px solid transparent;
background-clip: content-box;
border-image: url(images/shadow.png) 9 9 repeat;
background-color: white;
}

.pdfViewer .page canvas {
margin: 0;
display: block;
}

.pdfViewer .page .loadingIcon {
position: absolute;
display: block;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: url('images/loading-icon.gif') center no-repeat;
}

.pdfViewer .page .annotLink > a:hover {
opacity: 0.2;
background: #ff0;
box-shadow: 0px 2px 10px #ff0;
}

:-webkit-full-screen .pdfViewer .page {
margin-bottom: 100%;
border: 0;
}

:-moz-full-screen .pdfViewer .page {
margin-bottom: 100%;
border: 0;
}

:-ms-fullscreen .pdfViewer .page {
margin-bottom: 100% !important;
border: 0;
}

:fullscreen .pdfViewer .page {
margin-bottom: 100%;
border: 0;
}

.pdfViewer .page .annotationHighlight {
position: absolute;
border: 2px #FFFF99 solid;
}

.pdfViewer .page .annotText > img {
position: absolute;
cursor: pointer;
}

.pdfViewer .page .annotTextContentWrapper {
position: absolute;
width: 20em;
}

.pdfViewer .page .annotTextContent {
z-index: 200;
float: left;
max-width: 20em;
background-color: #FFFF99;
box-shadow: 0px 2px 5px #333;
border-radius: 2px;
padding: 0.6em;
cursor: pointer;
}

.pdfViewer .page .annotTextContent > h1 {
font-size: 1em;
border-bottom: 1px solid #000000;
padding-bottom: 0.2em;
}

.pdfViewer .page .annotTextContent > p {
padding-top: 0.2em;
}

.pdfViewer .page .annotLink > a {
position: absolute;
font-size: 1em;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

.pdfViewer .page .annotLink > a /* -ms-a */ {
background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAA\
LAAAAAABAAEAAAIBRAA7") 0 0 repeat;
}
59 changes: 59 additions & 0 deletions web/text_layer_builder.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/* Copyright 2014 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.
*/

.textLayer {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow: hidden;
}

.textLayer > div {
color: transparent;
position: absolute;
white-space: pre;
cursor: text;
-webkit-transform-origin: 0% 0%;
-moz-transform-origin: 0% 0%;
-o-transform-origin: 0% 0%;
-ms-transform-origin: 0% 0%;
transform-origin: 0% 0%;
}

.textLayer .highlight {
margin: -1px;
padding: 1px;

background-color: rgb(180, 0, 170);
border-radius: 4px;
}

.textLayer .highlight.begin {
border-radius: 4px 0px 0px 4px;
}

.textLayer .highlight.end {
border-radius: 0px 4px 4px 0px;
}

.textLayer .highlight.middle {
border-radius: 0px;
}

.textLayer .highlight.selected {
background-color: rgb(0, 100, 0);
}
Loading

0 comments on commit a10fde1

Please sign in to comment.