Merge branch 'refs/heads/master' into textsearch
Conflicts: web/viewer.css web/viewer.html web/viewer.js
342
Makefile
@ -1,342 +0,0 @@
|
||||
REPO = git@github.com:mozilla/pdf.js.git
|
||||
BUILD_DIR := build
|
||||
BUILD_TARGET := $(BUILD_DIR)/pdf.js
|
||||
DEFAULT_BROWSERS := resources/browser_manifests/browser_manifest.json
|
||||
DEFAULT_TESTS := test_manifest.json
|
||||
DEFAULT_PYTHON := python2.7
|
||||
|
||||
EXTENSION_SRC := ./extensions/
|
||||
EXTENSION_BASE_VERSION := f0f0418a9c6637981fe1182b9212c2d592774c7d
|
||||
FIREFOX_EXTENSION_NAME := pdf.js.xpi
|
||||
FIREFOX_AMO_EXTENSION_NAME := pdf.js.amo.xpi
|
||||
CHROME_EXTENSION_NAME := pdf.js.crx
|
||||
|
||||
all: bundle
|
||||
|
||||
# Let folks define custom rules for their clones.
|
||||
-include local.mk
|
||||
|
||||
# JS files needed for pdf.js.
|
||||
PDF_JS_FILES = \
|
||||
core.js \
|
||||
util.js \
|
||||
api.js \
|
||||
canvas.js \
|
||||
obj.js \
|
||||
function.js \
|
||||
charsets.js \
|
||||
cidmaps.js \
|
||||
colorspace.js \
|
||||
crypto.js \
|
||||
evaluator.js \
|
||||
fonts.js \
|
||||
glyphlist.js \
|
||||
image.js \
|
||||
metrics.js \
|
||||
parser.js \
|
||||
pattern.js \
|
||||
stream.js \
|
||||
worker.js \
|
||||
../external/jpgjs/jpg.js \
|
||||
jpx.js \
|
||||
bidi.js \
|
||||
metadata.js \
|
||||
$(NULL)
|
||||
|
||||
# make server
|
||||
#
|
||||
# This target starts a local web server at localhost:8888. This can be
|
||||
# used for testing all browsers.
|
||||
server:
|
||||
@cd test; $(DEFAULT_PYTHON) test.py --port=8888;
|
||||
|
||||
# make test
|
||||
#
|
||||
# This target runs all the tests excluding the unit-test. This can be used for
|
||||
# testing all browsers.
|
||||
test: shell-test browser-test
|
||||
|
||||
#
|
||||
# Create production output (pdf.js, and corresponding changes to web files)
|
||||
#
|
||||
production: | bundle
|
||||
@echo "Preparing web/viewer-production.html"; \
|
||||
cd web; \
|
||||
sed '/PDFJSSCRIPT_REMOVE_CORE/d' viewer.html > viewer-1.tmp; \
|
||||
sed '/PDFJSSCRIPT_INCLUDE_BUILD/ r viewer-snippet.html' viewer-1.tmp > viewer-production.html; \
|
||||
rm -f *.tmp; \
|
||||
cd ..
|
||||
|
||||
#
|
||||
# Bundle pdf.js
|
||||
#
|
||||
bundle: | $(BUILD_DIR)
|
||||
@echo "Bundling source files into $(BUILD_TARGET)"
|
||||
@cd src; \
|
||||
cat $(PDF_JS_FILES) > all_files.tmp; \
|
||||
sed '/PDFJSSCRIPT_INCLUDE_ALL/ r all_files.tmp' pdf.js > ../$(BUILD_TARGET); \
|
||||
cp ../$(BUILD_TARGET) ../$(BUILD_TARGET).bak; \
|
||||
sed "s/PDFJSSCRIPT_BUNDLE_VER/`git log --format="%h" -n 1`/" ../$(BUILD_TARGET).bak > ../$(BUILD_TARGET); \
|
||||
rm -f ../$(BUILD_TARGET).bak; \
|
||||
rm -f *.tmp; \
|
||||
cd ..
|
||||
|
||||
# make unit-test
|
||||
#
|
||||
# This target runs in-browser unit tests with js-test-driver and jasmine unit
|
||||
# test framework.
|
||||
unit-test:
|
||||
@cd test/unit/ ; make ;
|
||||
|
||||
# make browser-test
|
||||
#
|
||||
# This target runs in-browser tests using two primary arguments: a
|
||||
# test manifest file, and a browser manifest file. Both are simple
|
||||
# JSON formats, and examples can be found in the test/ directory. The
|
||||
# target will inspect the environment for the PDF_TESTS and
|
||||
# PDF_BROWSERS variables, and use those if found. Otherwise, the
|
||||
# defaults at the top of this file are used.
|
||||
ifeq ($(PDF_TESTS),)
|
||||
PDF_TESTS := $(DEFAULT_TESTS)
|
||||
endif
|
||||
ifeq ($(PDF_BROWSERS),)
|
||||
PDF_BROWSERS := $(DEFAULT_BROWSERS)
|
||||
endif
|
||||
|
||||
browser-test:
|
||||
@if [ ! -f "test/$(PDF_BROWSERS)" ]; then \
|
||||
echo "Browser manifest file $(PDF_BROWSERS) does not exist."; \
|
||||
echo "Try copying one of the examples" \
|
||||
"in test/resources/browser_manifests/"; \
|
||||
exit 1; \
|
||||
fi;
|
||||
|
||||
cd test; \
|
||||
$(DEFAULT_PYTHON) test.py --reftest \
|
||||
--browserManifestFile=$(PDF_BROWSERS) \
|
||||
--manifestFile=$(PDF_TESTS)
|
||||
|
||||
# # make shell-test
|
||||
# #
|
||||
# # This target runs all of the tests that can be run in a JS shell.
|
||||
# # The shell used is taken from the JS_SHELL environment variable. If
|
||||
# # that variable is not defined, the script will attempt to use the copy
|
||||
# # of Rhino that comes with the Closure compiler used for producing the
|
||||
# # website.
|
||||
# SHELL_TARGET = $(NULL)
|
||||
# ifeq ($(JS_SHELL),)
|
||||
# JS_SHELL := "java -cp $(BUILD_DIR)/compiler.jar"
|
||||
# JS_SHELL += "com.google.javascript.jscomp.mozilla.rhino.tools.shell.Main"
|
||||
# SHELL_TARGET = compiler
|
||||
# endif
|
||||
#
|
||||
# shell-test: shell-msg $(SHELL_TARGET) font-test
|
||||
# shell-msg:
|
||||
# ifeq ($(SHELL_TARGET), compiler)
|
||||
# @echo "No JS_SHELL env variable present."
|
||||
# @echo "The default is to find a copy of Rhino and try that."
|
||||
# endif
|
||||
# @echo "JS shell command is: $(JS_SHELL)"
|
||||
#
|
||||
# font-test:
|
||||
# @echo "font test stub."
|
||||
|
||||
# make lint
|
||||
#
|
||||
# This target runs the Closure Linter on most of our JS files.
|
||||
# To install gjslint, see:
|
||||
#
|
||||
# <http://code.google.com/closure/utilities/docs/linter_howto.html>
|
||||
SRC_DIRS := src utils web test examples/helloworld extensions/firefox \
|
||||
extensions/firefox/components extensions/chrome test/unit
|
||||
GJSLINT_FILES = $(foreach DIR, $(SRC_DIRS), $(wildcard $(DIR)/*.js))
|
||||
lint:
|
||||
gjslint --nojsdoc $(GJSLINT_FILES)
|
||||
|
||||
# make web
|
||||
#
|
||||
# This target produces the website for the project, by checking out
|
||||
# the gh-pages branch underneath the build directory, and then move
|
||||
# the various viewer files into place.
|
||||
#
|
||||
# TODO: Use the Closure compiler to optimize the pdf.js files.
|
||||
#
|
||||
GH_PAGES = $(BUILD_DIR)/gh-pages
|
||||
web: | production extension compiler pages-repo
|
||||
@cp $(BUILD_TARGET) $(GH_PAGES)/$(BUILD_TARGET)
|
||||
@cp -R web/* $(GH_PAGES)/web
|
||||
@cp web/images/* $(GH_PAGES)/web/images
|
||||
@cp $(FIREFOX_BUILD_DIR)/$(FIREFOX_EXTENSION_NAME) \
|
||||
$(FIREFOX_BUILD_DIR)/$(FIREFOX_AMO_EXTENSION_NAME) \
|
||||
$(FIREFOX_BUILD_DIR)/update.rdf \
|
||||
$(GH_PAGES)/$(EXTENSION_SRC)/firefox/
|
||||
@cp $(GH_PAGES)/web/index.html.template $(GH_PAGES)/index.html;
|
||||
@mv -f $(GH_PAGES)/web/viewer-production.html $(GH_PAGES)/web/viewer.html;
|
||||
@cd $(GH_PAGES); git add -A;
|
||||
@echo
|
||||
@echo "Website built in $(GH_PAGES)."
|
||||
@echo "Don't forget to cd into $(GH_PAGES)/ and issue 'git commit' to push changes."
|
||||
|
||||
# make pages-repo
|
||||
#
|
||||
# This target clones the gh-pages repo into the build directory. It
|
||||
# deletes the current contents of the repo, since we overwrite
|
||||
# everything with data from the master repo. The 'make web' target
|
||||
# then uses 'git add -A' to track additions, modifications, moves,
|
||||
# and deletions.
|
||||
pages-repo: | $(BUILD_DIR)
|
||||
@if [ ! -d "$(GH_PAGES)" ]; then \
|
||||
git clone --depth 1 -b gh-pages $(REPO) $(GH_PAGES); \
|
||||
rm -rf $(GH_PAGES)/*; \
|
||||
fi;
|
||||
@mkdir -p $(GH_PAGES)/web;
|
||||
@mkdir -p $(GH_PAGES)/web/images;
|
||||
@mkdir -p $(GH_PAGES)/build;
|
||||
@mkdir -p $(GH_PAGES)/$(EXTENSION_SRC)/firefox;
|
||||
|
||||
# # make compiler
|
||||
# #
|
||||
# # This target downloads the Closure compiler, and places it in the
|
||||
# # build directory. This target is also useful when the user doesn't
|
||||
# # have a JS shell available--we can have them use the Rhino shell that
|
||||
# # comes with Closure.
|
||||
# COMPILER_URL = http://closure-compiler.googlecode.com/files/compiler-latest.zip
|
||||
#
|
||||
# compiler: $(BUILD_DIR)/compiler.zip
|
||||
# $(BUILD_DIR)/compiler.zip: | $(BUILD_DIR)
|
||||
# curl $(COMPILER_URL) > $(BUILD_DIR)/compiler.zip;
|
||||
# cd $(BUILD_DIR); unzip compiler.zip compiler.jar;
|
||||
|
||||
# make extension
|
||||
#
|
||||
# This target produce a restartless firefox extension containing a
|
||||
# copy of the pdf.js source.
|
||||
CONTENT_DIR := content
|
||||
BUILD_NUMBER := `git log --format=oneline $(EXTENSION_BASE_VERSION).. | wc -l | awk '{print $$1}'`
|
||||
PDFJSSCRIPT_VERSION := 0.3.$(BUILD_NUMBER)
|
||||
EXTENSION_WEB_FILES = \
|
||||
web/images \
|
||||
web/viewer.css \
|
||||
web/viewer.js \
|
||||
web/viewer.html \
|
||||
web/viewer-production.html \
|
||||
web/debugger.js \
|
||||
$(NULL)
|
||||
|
||||
FIREFOX_BUILD_DIR := $(BUILD_DIR)/firefox
|
||||
FIREFOX_BUILD_CONTENT := $(FIREFOX_BUILD_DIR)/$(CONTENT_DIR)/
|
||||
FIREFOX_CONTENT_DIR := $(EXTENSION_SRC)/firefox/$(CONTENT_DIR)/
|
||||
FIREFOX_EXTENSION_FILES_TO_COPY = \
|
||||
*.js \
|
||||
*.rdf \
|
||||
*.png \
|
||||
install.rdf.in \
|
||||
README.mozilla \
|
||||
components \
|
||||
../../LICENSE \
|
||||
$(NULL)
|
||||
FIREFOX_EXTENSION_FILES = \
|
||||
bootstrap.js \
|
||||
install.rdf \
|
||||
icon.png \
|
||||
icon64.png \
|
||||
components \
|
||||
content \
|
||||
LICENSE \
|
||||
$(NULL)
|
||||
FIREFOX_MC_EXTENSION_FILES = \
|
||||
bootstrap.js \
|
||||
icon.png \
|
||||
icon64.png \
|
||||
components \
|
||||
content \
|
||||
LICENSE \
|
||||
$(NULL)
|
||||
|
||||
CHROME_BUILD_DIR := $(BUILD_DIR)/chrome
|
||||
CHROME_CONTENT_DIR := $(EXTENSION_SRC)/chrome/$(CONTENT_DIR)/
|
||||
CHROME_BUILD_CONTENT := $(CHROME_BUILD_DIR)/$(CONTENT_DIR)/
|
||||
CHROME_EXTENSION_FILES = \
|
||||
extensions/chrome/*.json \
|
||||
extensions/chrome/*.html \
|
||||
$(NULL)
|
||||
extension: | production
|
||||
# Clear out everything in the firefox extension build directory
|
||||
@rm -Rf $(FIREFOX_BUILD_DIR)
|
||||
@mkdir -p $(FIREFOX_BUILD_CONTENT)
|
||||
@mkdir -p $(FIREFOX_BUILD_CONTENT)/$(BUILD_DIR)
|
||||
@mkdir -p $(FIREFOX_BUILD_CONTENT)/web
|
||||
@cd extensions/firefox; cp -r $(FIREFOX_EXTENSION_FILES_TO_COPY) ../../$(FIREFOX_BUILD_DIR)/
|
||||
# Copy a standalone version of pdf.js inside the content directory
|
||||
@cp $(BUILD_TARGET) $(FIREFOX_BUILD_CONTENT)/$(BUILD_DIR)/
|
||||
@cp -r $(EXTENSION_WEB_FILES) $(FIREFOX_BUILD_CONTENT)/web/
|
||||
@rm $(FIREFOX_BUILD_CONTENT)/web/viewer-production.html
|
||||
# Copy over the firefox extension snippet so we can inline pdf.js in it
|
||||
@cp web/viewer-snippet-firefox-extension.html $(FIREFOX_BUILD_CONTENT)/web/
|
||||
# Modify the viewer so it does all the extension only stuff.
|
||||
@cd $(FIREFOX_BUILD_CONTENT)/web; \
|
||||
cp viewer-snippet-firefox-extension.html viewer-snippet-firefox-extension.html.bak; \
|
||||
sed '/PDFJSSCRIPT_INCLUDE_BUNDLE/ r ../build/pdf.js' viewer-snippet-firefox-extension.html.bak > viewer-snippet-firefox-extension.html; \
|
||||
cp viewer.html viewer.html.bak; \
|
||||
sed '/PDFJSSCRIPT_REMOVE_CORE/d' viewer.html.bak > viewer.html; \
|
||||
cp viewer.html viewer.html.bak; \
|
||||
sed '/PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION/d' viewer.html.bak > viewer.html; \
|
||||
cp viewer.html viewer.html.bak; \
|
||||
sed '/PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION/ r viewer-snippet-firefox-extension.html' viewer.html.bak > viewer.html; \
|
||||
rm -f *.bak;
|
||||
# We don't need pdf.js anymore since its inlined
|
||||
@rm -Rf $(FIREFOX_BUILD_CONTENT)/$(BUILD_DIR)/;
|
||||
# Update the build version number
|
||||
cp $(FIREFOX_BUILD_DIR)/install.rdf $(FIREFOX_BUILD_DIR)/install.rdf.bak
|
||||
@sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/install.rdf.bak > $(FIREFOX_BUILD_DIR)/install.rdf
|
||||
cp $(FIREFOX_BUILD_DIR)/install.rdf.in $(FIREFOX_BUILD_DIR)/install.rdf.in.bak
|
||||
@sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/install.rdf.in.bak > $(FIREFOX_BUILD_DIR)/install.rdf.in
|
||||
cp $(FIREFOX_BUILD_DIR)/update.rdf $(FIREFOX_BUILD_DIR)/update.rdf.bak
|
||||
@sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/update.rdf.bak > $(FIREFOX_BUILD_DIR)/update.rdf
|
||||
cp $(FIREFOX_BUILD_DIR)/README.mozilla $(FIREFOX_BUILD_DIR)/README.mozilla.bak
|
||||
@sed "s/PDFJSSCRIPT_VERSION/$(PDFJSSCRIPT_VERSION)/" $(FIREFOX_BUILD_DIR)/README.mozilla.bak > $(FIREFOX_BUILD_DIR)/README.mozilla
|
||||
@rm -f $(FIREFOX_BUILD_DIR)/*.bak
|
||||
@find $(FIREFOX_BUILD_DIR) -name ".*" -delete
|
||||
# Create the xpi
|
||||
@cd $(FIREFOX_BUILD_DIR); zip -r $(FIREFOX_EXTENSION_NAME) $(FIREFOX_EXTENSION_FILES)
|
||||
@echo "extension created: " $(FIREFOX_EXTENSION_NAME)
|
||||
# Build the amo extension too (remove the updateUrl)
|
||||
cp $(FIREFOX_BUILD_DIR)/install.rdf $(FIREFOX_BUILD_DIR)/install.rdf.bak
|
||||
@sed "/updateURL/d" $(FIREFOX_BUILD_DIR)/install.rdf.bak > $(FIREFOX_BUILD_DIR)/install.rdf
|
||||
@rm -f $(FIREFOX_BUILD_DIR)/*.bak
|
||||
@cd $(FIREFOX_BUILD_DIR); zip -r $(FIREFOX_AMO_EXTENSION_NAME) $(FIREFOX_EXTENSION_FILES)
|
||||
@echo "AMO extension created: " $(FIREFOX_AMO_EXTENSION_NAME)
|
||||
# List all files for mozilla-central
|
||||
@cd $(FIREFOX_BUILD_DIR); find $(FIREFOX_MC_EXTENSION_FILES) -type f > extension-files
|
||||
|
||||
# Clear out everything in the chrome extension build directory
|
||||
@rm -Rf $(CHROME_BUILD_DIR)
|
||||
@mkdir -p $(CHROME_BUILD_CONTENT)
|
||||
@mkdir -p $(CHROME_BUILD_CONTENT)/$(BUILD_DIR)
|
||||
@mkdir -p $(CHROME_BUILD_CONTENT)/web
|
||||
@cp -R $(CHROME_EXTENSION_FILES) $(CHROME_BUILD_DIR)/
|
||||
# Copy a standalone version of pdf.js inside the content directory
|
||||
@cp $(BUILD_TARGET) $(CHROME_BUILD_CONTENT)/$(BUILD_DIR)/
|
||||
@cp -r $(EXTENSION_WEB_FILES) $(CHROME_BUILD_CONTENT)/web/
|
||||
@mv -f $(CHROME_BUILD_CONTENT)/web/viewer-production.html $(CHROME_BUILD_CONTENT)/web/viewer.html
|
||||
|
||||
# Create the crx
|
||||
#TODO
|
||||
|
||||
|
||||
|
||||
# Make sure there's a build directory.
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $(BUILD_DIR)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
# make help
|
||||
#
|
||||
# This target just prints out a message to read these comments. :)
|
||||
help:
|
||||
@echo "Read the comments in the Makefile for guidance.";
|
||||
|
||||
.PHONY:: production test browser-test font-test shell-test \
|
||||
shell-msg lint clean web compiler help server
|
13
README.md
@ -36,7 +36,7 @@ Also, note that the development extension is updated on every merge and by defau
|
||||
auto-update extensions on a daily basis (you can change this through the
|
||||
`extensions.update.interval` option in `about:config`).
|
||||
|
||||
For an experimental Chrome extension, get the code as explained below and issue `make extension`.
|
||||
For an experimental Chrome extension, get the code as explained below and issue `node make extension`.
|
||||
Then open Chrome, go to `Tools > Extension` and load the (unpackaged) extension
|
||||
from the directory `build/chrome`.
|
||||
|
||||
@ -50,9 +50,10 @@ To get a local copy of the current code, clone it using git:
|
||||
Next, you need to start a local web server as some browsers don't allow opening
|
||||
PDF files for a file:// url:
|
||||
|
||||
$ make server
|
||||
$ node make server
|
||||
|
||||
If everything worked out, you can now serve
|
||||
You can install Node via [nvm](https://github.com/creationix/nvm) or the
|
||||
[official package](http://nodejs.org). If everything worked out, you can now serve
|
||||
|
||||
+ http://localhost:8888/web/viewer.html
|
||||
|
||||
@ -64,7 +65,7 @@ You can also view all the test pdf files on the right side serving
|
||||
|
||||
In order to bundle all `src/` files into a final `pdf.js`, issue:
|
||||
|
||||
$ make
|
||||
$ node make bundle
|
||||
|
||||
This will generate the file `build/pdf.js` that can be included in your final project. (WARNING: That's a large file! Consider minifying it).
|
||||
|
||||
@ -73,8 +74,8 @@ This will generate the file `build/pdf.js` that can be included in your final pr
|
||||
|
||||
You can play with the PDF.js API directly from your browser through the live demos below:
|
||||
|
||||
+ Hello world: http://jsbin.com/pdfjs-helloworld/edit#html,live
|
||||
+ Simple reader with prev/next page controls: http://jsbin.com/pdfjs-prevnext/edit#html,live
|
||||
+ Hello world: http://jsbin.com/pdfjs-helloworld-v2/edit#html,live
|
||||
+ Simple reader with prev/next page controls: http://jsbin.com/pdfjs-prevnext-v2/edit#html,live
|
||||
|
||||
The repo contains a hello world example that you can run locally:
|
||||
|
||||
|
1
extensions/firefox/.gitignore
vendored
@ -1 +1,2 @@
|
||||
content/
|
||||
metadata.inc
|
||||
|
@ -58,6 +58,9 @@ ChromeActions.prototype = {
|
||||
return '{}';
|
||||
return application.prefs.getValue(EXT_PREFIX + '.database', '{}');
|
||||
},
|
||||
getLocale: function() {
|
||||
return application.prefs.getValue('general.useragent.locale', 'en-US');
|
||||
},
|
||||
pdfBugEnabled: function() {
|
||||
return application.prefs.getValue(EXT_PREFIX + '.pdfBugEnabled', false);
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>uriloader@pdf.js</em:id>
|
||||
<!-- PDFJS_LOCALIZED_METADATA -->
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:version>PDFJSSCRIPT_VERSION</em:version>
|
||||
<em:targetApplication>
|
||||
|
@ -7,6 +7,7 @@
|
||||
|
||||
<Description about="urn:mozilla:install-manifest">
|
||||
<em:id>uriloader@pdf.js</em:id>
|
||||
<!-- PDFJS_LOCALIZED_METADATA -->
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:version>PDFJSSCRIPT_VERSION</em:version>
|
||||
<em:targetApplication>
|
||||
|
676
external/jasmine/jasmine-html.js
vendored
Normal file
@ -0,0 +1,676 @@
|
||||
jasmine.HtmlReporterHelpers = {};
|
||||
|
||||
jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) {
|
||||
var el = document.createElement(type);
|
||||
|
||||
for (var i = 2; i < arguments.length; i++) {
|
||||
var child = arguments[i];
|
||||
|
||||
if (typeof child === 'string') {
|
||||
el.appendChild(document.createTextNode(child));
|
||||
} else {
|
||||
if (child) {
|
||||
el.appendChild(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var attr in attrs) {
|
||||
if (attr == "className") {
|
||||
el[attr] = attrs[attr];
|
||||
} else {
|
||||
el.setAttribute(attr, attrs[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
return el;
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.getSpecStatus = function(child) {
|
||||
var results = child.results();
|
||||
var status = results.passed() ? 'passed' : 'failed';
|
||||
if (results.skipped) {
|
||||
status = 'skipped';
|
||||
}
|
||||
|
||||
return status;
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.appendToSummary = function(child, childElement) {
|
||||
var parentDiv = this.dom.summary;
|
||||
var parentSuite = (typeof child.parentSuite == 'undefined') ? 'suite' : 'parentSuite';
|
||||
var parent = child[parentSuite];
|
||||
|
||||
if (parent) {
|
||||
if (typeof this.views.suites[parent.id] == 'undefined') {
|
||||
this.views.suites[parent.id] = new jasmine.HtmlReporter.SuiteView(parent, this.dom, this.views);
|
||||
}
|
||||
parentDiv = this.views.suites[parent.id].element;
|
||||
}
|
||||
|
||||
parentDiv.appendChild(childElement);
|
||||
};
|
||||
|
||||
|
||||
jasmine.HtmlReporterHelpers.addHelpers = function(ctor) {
|
||||
for(var fn in jasmine.HtmlReporterHelpers) {
|
||||
ctor.prototype[fn] = jasmine.HtmlReporterHelpers[fn];
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter = function(_doc) {
|
||||
var self = this;
|
||||
var doc = _doc || window.document;
|
||||
|
||||
var reporterView;
|
||||
|
||||
var dom = {};
|
||||
|
||||
// Jasmine Reporter Public Interface
|
||||
self.logRunningSpecs = false;
|
||||
|
||||
self.reportRunnerStarting = function(runner) {
|
||||
var specs = runner.specs() || [];
|
||||
|
||||
if (specs.length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
createReporterDom(runner.env.versionString());
|
||||
doc.body.appendChild(dom.reporter);
|
||||
|
||||
reporterView = new jasmine.HtmlReporter.ReporterView(dom);
|
||||
reporterView.addSpecs(specs, self.specFilter);
|
||||
};
|
||||
|
||||
self.reportRunnerResults = function(runner) {
|
||||
reporterView.complete();
|
||||
};
|
||||
|
||||
self.reportSuiteResults = function(suite) {
|
||||
reporterView.suiteComplete(suite);
|
||||
};
|
||||
|
||||
self.reportSpecStarting = function(spec) {
|
||||
if (self.logRunningSpecs) {
|
||||
self.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
|
||||
}
|
||||
};
|
||||
|
||||
self.reportSpecResults = function(spec) {
|
||||
reporterView.specComplete(spec);
|
||||
};
|
||||
|
||||
self.log = function() {
|
||||
var console = jasmine.getGlobal().console;
|
||||
if (console && console.log) {
|
||||
if (console.log.apply) {
|
||||
console.log.apply(console, arguments);
|
||||
} else {
|
||||
console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
self.specFilter = function(spec) {
|
||||
if (!focusedSpecName()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return spec.getFullName().indexOf(focusedSpecName()) === 0;
|
||||
};
|
||||
|
||||
return self;
|
||||
|
||||
function focusedSpecName() {
|
||||
var specName;
|
||||
|
||||
(function memoizeFocusedSpec() {
|
||||
if (specName) {
|
||||
return;
|
||||
}
|
||||
|
||||
var paramMap = [];
|
||||
var params = doc.location.search.substring(1).split('&');
|
||||
|
||||
for (var i = 0; i < params.length; i++) {
|
||||
var p = params[i].split('=');
|
||||
paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
|
||||
}
|
||||
|
||||
specName = paramMap.spec;
|
||||
})();
|
||||
|
||||
return specName;
|
||||
}
|
||||
|
||||
function createReporterDom(version) {
|
||||
dom.reporter = self.createDom('div', { id: 'HTMLReporter', className: 'jasmine_reporter' },
|
||||
dom.banner = self.createDom('div', { className: 'banner' },
|
||||
self.createDom('span', { className: 'title' }, "Jasmine "),
|
||||
self.createDom('span', { className: 'version' }, version)),
|
||||
|
||||
dom.symbolSummary = self.createDom('ul', {className: 'symbolSummary'}),
|
||||
dom.alert = self.createDom('div', {className: 'alert'}),
|
||||
dom.results = self.createDom('div', {className: 'results'},
|
||||
dom.summary = self.createDom('div', { className: 'summary' }),
|
||||
dom.details = self.createDom('div', { id: 'details' }))
|
||||
);
|
||||
}
|
||||
};
|
||||
jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter);jasmine.HtmlReporterHelpers = {};
|
||||
|
||||
jasmine.HtmlReporterHelpers.createDom = function(type, attrs, childrenVarArgs) {
|
||||
var el = document.createElement(type);
|
||||
|
||||
for (var i = 2; i < arguments.length; i++) {
|
||||
var child = arguments[i];
|
||||
|
||||
if (typeof child === 'string') {
|
||||
el.appendChild(document.createTextNode(child));
|
||||
} else {
|
||||
if (child) {
|
||||
el.appendChild(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var attr in attrs) {
|
||||
if (attr == "className") {
|
||||
el[attr] = attrs[attr];
|
||||
} else {
|
||||
el.setAttribute(attr, attrs[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
return el;
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.getSpecStatus = function(child) {
|
||||
var results = child.results();
|
||||
var status = results.passed() ? 'passed' : 'failed';
|
||||
if (results.skipped) {
|
||||
status = 'skipped';
|
||||
}
|
||||
|
||||
return status;
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.appendToSummary = function(child, childElement) {
|
||||
var parentDiv = this.dom.summary;
|
||||
var parentSuite = (typeof child.parentSuite == 'undefined') ? 'suite' : 'parentSuite';
|
||||
var parent = child[parentSuite];
|
||||
|
||||
if (parent) {
|
||||
if (typeof this.views.suites[parent.id] == 'undefined') {
|
||||
this.views.suites[parent.id] = new jasmine.HtmlReporter.SuiteView(parent, this.dom, this.views);
|
||||
}
|
||||
parentDiv = this.views.suites[parent.id].element;
|
||||
}
|
||||
|
||||
parentDiv.appendChild(childElement);
|
||||
};
|
||||
|
||||
|
||||
jasmine.HtmlReporterHelpers.addHelpers = function(ctor) {
|
||||
for(var fn in jasmine.HtmlReporterHelpers) {
|
||||
ctor.prototype[fn] = jasmine.HtmlReporterHelpers[fn];
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.ReporterView = function(dom) {
|
||||
this.startedAt = new Date();
|
||||
this.runningSpecCount = 0;
|
||||
this.completeSpecCount = 0;
|
||||
this.passedCount = 0;
|
||||
this.failedCount = 0;
|
||||
this.skippedCount = 0;
|
||||
|
||||
this.createResultsMenu = function() {
|
||||
this.resultsMenu = this.createDom('span', {className: 'resultsMenu bar'},
|
||||
this.summaryMenuItem = this.createDom('a', {className: 'summaryMenuItem', href: "#"}, '0 specs'),
|
||||
' | ',
|
||||
this.detailsMenuItem = this.createDom('a', {className: 'detailsMenuItem', href: "#"}, '0 failing'));
|
||||
|
||||
this.summaryMenuItem.onclick = function() {
|
||||
dom.reporter.className = dom.reporter.className.replace(/ showDetails/g, '');
|
||||
};
|
||||
|
||||
this.detailsMenuItem.onclick = function() {
|
||||
showDetails();
|
||||
};
|
||||
};
|
||||
|
||||
this.addSpecs = function(specs, specFilter) {
|
||||
this.totalSpecCount = specs.length;
|
||||
|
||||
this.views = {
|
||||
specs: {},
|
||||
suites: {}
|
||||
};
|
||||
|
||||
for (var i = 0; i < specs.length; i++) {
|
||||
var spec = specs[i];
|
||||
this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom, this.views);
|
||||
if (specFilter(spec)) {
|
||||
this.runningSpecCount++;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.specComplete = function(spec) {
|
||||
this.completeSpecCount++;
|
||||
|
||||
if (isUndefined(this.views.specs[spec.id])) {
|
||||
this.views.specs[spec.id] = new jasmine.HtmlReporter.SpecView(spec, dom);
|
||||
}
|
||||
|
||||
var specView = this.views.specs[spec.id];
|
||||
|
||||
switch (specView.status()) {
|
||||
case 'passed':
|
||||
this.passedCount++;
|
||||
break;
|
||||
|
||||
case 'failed':
|
||||
this.failedCount++;
|
||||
break;
|
||||
|
||||
case 'skipped':
|
||||
this.skippedCount++;
|
||||
break;
|
||||
}
|
||||
|
||||
specView.refresh();
|
||||
this.refresh();
|
||||
};
|
||||
|
||||
this.suiteComplete = function(suite) {
|
||||
var suiteView = this.views.suites[suite.id];
|
||||
if (isUndefined(suiteView)) {
|
||||
return;
|
||||
}
|
||||
suiteView.refresh();
|
||||
};
|
||||
|
||||
this.refresh = function() {
|
||||
|
||||
if (isUndefined(this.resultsMenu)) {
|
||||
this.createResultsMenu();
|
||||
}
|
||||
|
||||
// currently running UI
|
||||
if (isUndefined(this.runningAlert)) {
|
||||
this.runningAlert = this.createDom('a', {href: "?", className: "runningAlert bar"});
|
||||
dom.alert.appendChild(this.runningAlert);
|
||||
}
|
||||
this.runningAlert.innerHTML = "Running " + this.completeSpecCount + " of " + specPluralizedFor(this.totalSpecCount);
|
||||
|
||||
// skipped specs UI
|
||||
if (isUndefined(this.skippedAlert)) {
|
||||
this.skippedAlert = this.createDom('a', {href: "?", className: "skippedAlert bar"});
|
||||
}
|
||||
|
||||
this.skippedAlert.innerHTML = "Skipping " + this.skippedCount + " of " + specPluralizedFor(this.totalSpecCount) + " - run all";
|
||||
|
||||
if (this.skippedCount === 1 && isDefined(dom.alert)) {
|
||||
dom.alert.appendChild(this.skippedAlert);
|
||||
}
|
||||
|
||||
// passing specs UI
|
||||
if (isUndefined(this.passedAlert)) {
|
||||
this.passedAlert = this.createDom('span', {href: "?", className: "passingAlert bar"});
|
||||
}
|
||||
this.passedAlert.innerHTML = "Passing " + specPluralizedFor(this.passedCount);
|
||||
|
||||
// failing specs UI
|
||||
if (isUndefined(this.failedAlert)) {
|
||||
this.failedAlert = this.createDom('span', {href: "?", className: "failingAlert bar"});
|
||||
}
|
||||
this.failedAlert.innerHTML = "Failing " + specPluralizedFor(this.failedCount);
|
||||
|
||||
if (this.failedCount === 1 && isDefined(dom.alert)) {
|
||||
dom.alert.appendChild(this.failedAlert);
|
||||
dom.alert.appendChild(this.resultsMenu);
|
||||
}
|
||||
|
||||
// summary info
|
||||
this.summaryMenuItem.innerHTML = "" + specPluralizedFor(this.runningSpecCount);
|
||||
this.detailsMenuItem.innerHTML = "" + this.failedCount + " failing";
|
||||
};
|
||||
|
||||
this.complete = function() {
|
||||
dom.alert.removeChild(this.runningAlert);
|
||||
|
||||
this.skippedAlert.innerHTML = "Ran " + this.runningSpecCount + " of " + specPluralizedFor(this.totalSpecCount) + " - run all";
|
||||
|
||||
if (this.failedCount === 0) {
|
||||
dom.alert.appendChild(this.createDom('span', {className: 'passingAlert bar'}, "Passing " + specPluralizedFor(this.passedCount)));
|
||||
} else {
|
||||
showDetails();
|
||||
}
|
||||
|
||||
dom.banner.appendChild(this.createDom('span', {className: 'duration'}, "finished in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s"));
|
||||
};
|
||||
|
||||
return this;
|
||||
|
||||
function showDetails() {
|
||||
if (dom.reporter.className.search(/showDetails/) === -1) {
|
||||
dom.reporter.className += " showDetails";
|
||||
}
|
||||
}
|
||||
|
||||
function isUndefined(obj) {
|
||||
return typeof obj === 'undefined';
|
||||
}
|
||||
|
||||
function isDefined(obj) {
|
||||
return !isUndefined(obj);
|
||||
}
|
||||
|
||||
function specPluralizedFor(count) {
|
||||
var str = count + " spec";
|
||||
if (count > 1) {
|
||||
str += "s"
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.ReporterView);
|
||||
|
||||
|
||||
jasmine.HtmlReporter.SpecView = function(spec, dom, views) {
|
||||
this.spec = spec;
|
||||
this.dom = dom;
|
||||
this.views = views;
|
||||
|
||||
this.symbol = this.createDom('li', { className: 'pending' });
|
||||
this.dom.symbolSummary.appendChild(this.symbol);
|
||||
|
||||
this.summary = this.createDom('div', { className: 'specSummary' },
|
||||
this.createDom('a', {
|
||||
className: 'description',
|
||||
href: '?spec=' + encodeURIComponent(this.spec.getFullName()),
|
||||
title: this.spec.getFullName()
|
||||
}, this.spec.description)
|
||||
);
|
||||
|
||||
this.detail = this.createDom('div', { className: 'specDetail' },
|
||||
this.createDom('a', {
|
||||
className: 'description',
|
||||
href: '?spec=' + encodeURIComponent(this.spec.getFullName()),
|
||||
title: this.spec.getFullName()
|
||||
}, this.spec.getFullName())
|
||||
);
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.SpecView.prototype.status = function() {
|
||||
return this.getSpecStatus(this.spec);
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.SpecView.prototype.refresh = function() {
|
||||
this.symbol.className = this.status();
|
||||
|
||||
switch (this.status()) {
|
||||
case 'skipped':
|
||||
break;
|
||||
|
||||
case 'passed':
|
||||
this.appendSummaryToSuiteDiv();
|
||||
break;
|
||||
|
||||
case 'failed':
|
||||
this.appendSummaryToSuiteDiv();
|
||||
this.appendFailureDetail();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.SpecView.prototype.appendSummaryToSuiteDiv = function() {
|
||||
this.summary.className += ' ' + this.status();
|
||||
this.appendToSummary(this.spec, this.summary);
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.SpecView.prototype.appendFailureDetail = function() {
|
||||
this.detail.className += ' ' + this.status();
|
||||
|
||||
var resultItems = this.spec.results().getItems();
|
||||
var messagesDiv = this.createDom('div', { className: 'messages' });
|
||||
|
||||
for (var i = 0; i < resultItems.length; i++) {
|
||||
var result = resultItems[i];
|
||||
|
||||
if (result.type == 'log') {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
|
||||
} else if (result.type == 'expect' && result.passed && !result.passed()) {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
|
||||
|
||||
if (result.trace.stack) {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (messagesDiv.childNodes.length > 0) {
|
||||
this.detail.appendChild(messagesDiv);
|
||||
this.dom.details.appendChild(this.detail);
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SpecView);jasmine.HtmlReporter.SuiteView = function(suite, dom, views) {
|
||||
this.suite = suite;
|
||||
this.dom = dom;
|
||||
this.views = views;
|
||||
|
||||
this.element = this.createDom('div', { className: 'suite' },
|
||||
this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(this.suite.getFullName()) }, this.suite.description)
|
||||
);
|
||||
|
||||
this.appendToSummary(this.suite, this.element);
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.SuiteView.prototype.status = function() {
|
||||
return this.getSpecStatus(this.suite);
|
||||
};
|
||||
|
||||
jasmine.HtmlReporter.SuiteView.prototype.refresh = function() {
|
||||
this.element.className += " " + this.status();
|
||||
};
|
||||
|
||||
jasmine.HtmlReporterHelpers.addHelpers(jasmine.HtmlReporter.SuiteView);
|
||||
|
||||
/* @deprecated Use jasmine.HtmlReporter instead
|
||||
*/
|
||||
jasmine.TrivialReporter = function(doc) {
|
||||
this.document = doc || document;
|
||||
this.suiteDivs = {};
|
||||
this.logRunningSpecs = false;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) {
|
||||
var el = document.createElement(type);
|
||||
|
||||
for (var i = 2; i < arguments.length; i++) {
|
||||
var child = arguments[i];
|
||||
|
||||
if (typeof child === 'string') {
|
||||
el.appendChild(document.createTextNode(child));
|
||||
} else {
|
||||
if (child) { el.appendChild(child); }
|
||||
}
|
||||
}
|
||||
|
||||
for (var attr in attrs) {
|
||||
if (attr == "className") {
|
||||
el[attr] = attrs[attr];
|
||||
} else {
|
||||
el.setAttribute(attr, attrs[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
return el;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) {
|
||||
var showPassed, showSkipped;
|
||||
|
||||
this.outerDiv = this.createDom('div', { id: 'TrivialReporter', className: 'jasmine_reporter' },
|
||||
this.createDom('div', { className: 'banner' },
|
||||
this.createDom('div', { className: 'logo' },
|
||||
this.createDom('span', { className: 'title' }, "Jasmine"),
|
||||
this.createDom('span', { className: 'version' }, runner.env.versionString())),
|
||||
this.createDom('div', { className: 'options' },
|
||||
"Show ",
|
||||
showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }),
|
||||
this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "),
|
||||
showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }),
|
||||
this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped")
|
||||
)
|
||||
),
|
||||
|
||||
this.runnerDiv = this.createDom('div', { className: 'runner running' },
|
||||
this.createDom('a', { className: 'run_spec', href: '?' }, "run all"),
|
||||
this.runnerMessageSpan = this.createDom('span', {}, "Running..."),
|
||||
this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, ""))
|
||||
);
|
||||
|
||||
this.document.body.appendChild(this.outerDiv);
|
||||
|
||||
var suites = runner.suites();
|
||||
for (var i = 0; i < suites.length; i++) {
|
||||
var suite = suites[i];
|
||||
var suiteDiv = this.createDom('div', { className: 'suite' },
|
||||
this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"),
|
||||
this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description));
|
||||
this.suiteDivs[suite.id] = suiteDiv;
|
||||
var parentDiv = this.outerDiv;
|
||||
if (suite.parentSuite) {
|
||||
parentDiv = this.suiteDivs[suite.parentSuite.id];
|
||||
}
|
||||
parentDiv.appendChild(suiteDiv);
|
||||
}
|
||||
|
||||
this.startedAt = new Date();
|
||||
|
||||
var self = this;
|
||||
showPassed.onclick = function(evt) {
|
||||
if (showPassed.checked) {
|
||||
self.outerDiv.className += ' show-passed';
|
||||
} else {
|
||||
self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, '');
|
||||
}
|
||||
};
|
||||
|
||||
showSkipped.onclick = function(evt) {
|
||||
if (showSkipped.checked) {
|
||||
self.outerDiv.className += ' show-skipped';
|
||||
} else {
|
||||
self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, '');
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) {
|
||||
var results = runner.results();
|
||||
var className = (results.failedCount > 0) ? "runner failed" : "runner passed";
|
||||
this.runnerDiv.setAttribute("class", className);
|
||||
//do it twice for IE
|
||||
this.runnerDiv.setAttribute("className", className);
|
||||
var specs = runner.specs();
|
||||
var specCount = 0;
|
||||
for (var i = 0; i < specs.length; i++) {
|
||||
if (this.specFilter(specs[i])) {
|
||||
specCount++;
|
||||
}
|
||||
}
|
||||
var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s");
|
||||
message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s";
|
||||
this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild);
|
||||
|
||||
this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString()));
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) {
|
||||
var results = suite.results();
|
||||
var status = results.passed() ? 'passed' : 'failed';
|
||||
if (results.totalCount === 0) { // todo: change this to check results.skipped
|
||||
status = 'skipped';
|
||||
}
|
||||
this.suiteDivs[suite.id].className += " " + status;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) {
|
||||
if (this.logRunningSpecs) {
|
||||
this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...');
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) {
|
||||
var results = spec.results();
|
||||
var status = results.passed() ? 'passed' : 'failed';
|
||||
if (results.skipped) {
|
||||
status = 'skipped';
|
||||
}
|
||||
var specDiv = this.createDom('div', { className: 'spec ' + status },
|
||||
this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"),
|
||||
this.createDom('a', {
|
||||
className: 'description',
|
||||
href: '?spec=' + encodeURIComponent(spec.getFullName()),
|
||||
title: spec.getFullName()
|
||||
}, spec.description));
|
||||
|
||||
|
||||
var resultItems = results.getItems();
|
||||
var messagesDiv = this.createDom('div', { className: 'messages' });
|
||||
for (var i = 0; i < resultItems.length; i++) {
|
||||
var result = resultItems[i];
|
||||
|
||||
if (result.type == 'log') {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString()));
|
||||
} else if (result.type == 'expect' && result.passed && !result.passed()) {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message));
|
||||
|
||||
if (result.trace.stack) {
|
||||
messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (messagesDiv.childNodes.length > 0) {
|
||||
specDiv.appendChild(messagesDiv);
|
||||
}
|
||||
|
||||
this.suiteDivs[spec.suite.id].appendChild(specDiv);
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.log = function() {
|
||||
var console = jasmine.getGlobal().console;
|
||||
if (console && console.log) {
|
||||
if (console.log.apply) {
|
||||
console.log.apply(console, arguments);
|
||||
} else {
|
||||
console.log(arguments); // ie fix: console.log.apply doesn't exist on ie
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.getLocation = function() {
|
||||
return this.document.location;
|
||||
};
|
||||
|
||||
jasmine.TrivialReporter.prototype.specFilter = function(spec) {
|
||||
var paramMap = {};
|
||||
var params = this.getLocation().search.substring(1).split('&');
|
||||
for (var i = 0; i < params.length; i++) {
|
||||
var p = params[i].split('=');
|
||||
paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
|
||||
}
|
||||
|
||||
if (!paramMap.spec) {
|
||||
return true;
|
||||
}
|
||||
return spec.getFullName().indexOf(paramMap.spec) === 0;
|
||||
};
|
81
external/jasmine/jasmine.css
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
|
||||
|
||||
#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
|
||||
#HTMLReporter a { text-decoration: none; }
|
||||
#HTMLReporter a:hover { text-decoration: underline; }
|
||||
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
|
||||
#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
|
||||
#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
|
||||
#HTMLReporter .version { color: #aaaaaa; }
|
||||
#HTMLReporter .banner { margin-top: 14px; }
|
||||
#HTMLReporter .duration { color: #aaaaaa; float: right; }
|
||||
#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
|
||||
#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
|
||||
#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
|
||||
#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
|
||||
#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
|
||||
#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
|
||||
#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
|
||||
#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
|
||||
#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
|
||||
#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
|
||||
#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
|
||||
#HTMLReporter .runningAlert { background-color: #666666; }
|
||||
#HTMLReporter .skippedAlert { background-color: #aaaaaa; }
|
||||
#HTMLReporter .skippedAlert:first-child { background-color: #333333; }
|
||||
#HTMLReporter .skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; }
|
||||
#HTMLReporter .passingAlert { background-color: #a6b779; }
|
||||
#HTMLReporter .passingAlert:first-child { background-color: #5e7d00; }
|
||||
#HTMLReporter .failingAlert { background-color: #cf867e; }
|
||||
#HTMLReporter .failingAlert:first-child { background-color: #b03911; }
|
||||
#HTMLReporter .results { margin-top: 14px; }
|
||||
#HTMLReporter #details { display: none; }
|
||||
#HTMLReporter .resultsMenu, #HTMLReporter .resultsMenu a { background-color: #fff; color: #333333; }
|
||||
#HTMLReporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
|
||||
#HTMLReporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
|
||||
#HTMLReporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
|
||||
#HTMLReporter.showDetails .summary { display: none; }
|
||||
#HTMLReporter.showDetails #details { display: block; }
|
||||
#HTMLReporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
|
||||
#HTMLReporter .summary { margin-top: 14px; }
|
||||
#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }
|
||||
#HTMLReporter .summary .specSummary.passed a { color: #5e7d00; }
|
||||
#HTMLReporter .summary .specSummary.failed a { color: #b03911; }
|
||||
#HTMLReporter .description + .suite { margin-top: 0; }
|
||||
#HTMLReporter .suite { margin-top: 14px; }
|
||||
#HTMLReporter .suite a { color: #333333; }
|
||||
#HTMLReporter #details .specDetail { margin-bottom: 28px; }
|
||||
#HTMLReporter #details .specDetail .description { display: block; color: white; background-color: #b03911; }
|
||||
#HTMLReporter .resultMessage { padding-top: 14px; color: #333333; }
|
||||
#HTMLReporter .resultMessage span.result { display: block; }
|
||||
#HTMLReporter .stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
|
||||
|
||||
#TrivialReporter { padding: 8px 13px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; overflow-y: scroll; background-color: white; font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; /*.resultMessage {*/ /*white-space: pre;*/ /*}*/ }
|
||||
#TrivialReporter a:visited, #TrivialReporter a { color: #303; }
|
||||
#TrivialReporter a:hover, #TrivialReporter a:active { color: blue; }
|
||||
#TrivialReporter .run_spec { float: right; padding-right: 5px; font-size: .8em; text-decoration: none; }
|
||||
#TrivialReporter .banner { color: #303; background-color: #fef; padding: 5px; }
|
||||
#TrivialReporter .logo { float: left; font-size: 1.1em; padding-left: 5px; }
|
||||
#TrivialReporter .logo .version { font-size: .6em; padding-left: 1em; }
|
||||
#TrivialReporter .runner.running { background-color: yellow; }
|
||||
#TrivialReporter .options { text-align: right; font-size: .8em; }
|
||||
#TrivialReporter .suite { border: 1px outset gray; margin: 5px 0; padding-left: 1em; }
|
||||
#TrivialReporter .suite .suite { margin: 5px; }
|
||||
#TrivialReporter .suite.passed { background-color: #dfd; }
|
||||
#TrivialReporter .suite.failed { background-color: #fdd; }
|
||||
#TrivialReporter .spec { margin: 5px; padding-left: 1em; clear: both; }
|
||||
#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped { padding-bottom: 5px; border: 1px solid gray; }
|
||||
#TrivialReporter .spec.failed { background-color: #fbb; border-color: red; }
|
||||
#TrivialReporter .spec.passed { background-color: #bfb; border-color: green; }
|
||||
#TrivialReporter .spec.skipped { background-color: #bbb; }
|
||||
#TrivialReporter .messages { border-left: 1px dashed gray; padding-left: 1em; padding-right: 1em; }
|
||||
#TrivialReporter .passed { background-color: #cfc; display: none; }
|
||||
#TrivialReporter .failed { background-color: #fbb; }
|
||||
#TrivialReporter .skipped { color: #777; background-color: #eee; display: none; }
|
||||
#TrivialReporter .resultMessage span.result { display: block; line-height: 2em; color: black; }
|
||||
#TrivialReporter .resultMessage .mismatch { color: black; }
|
||||
#TrivialReporter .stackTrace { white-space: pre; font-size: .8em; margin-left: 10px; max-height: 5em; overflow: auto; border: 1px inset red; padding: 1em; background: #eef; }
|
||||
#TrivialReporter .finished-at { padding-left: 1em; font-size: .6em; }
|
||||
#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped { display: block; }
|
||||
#TrivialReporter #jasmine_content { position: fixed; right: 100%; }
|
||||
#TrivialReporter .runner { border: 1px solid gray; display: block; margin: 5px 0; padding: 2px 0 2px 10px; }
|
BIN
external/jasmine/jasmine_favicon.png
vendored
Normal file
After Width: | Height: | Size: 905 B |
198
external/jasmineAdapter/JasmineAdapter.js
vendored
@ -1,198 +0,0 @@
|
||||
/**
|
||||
* @fileoverview Jasmine JsTestDriver Adapter.
|
||||
* @author misko@hevery.com (Misko Hevery)
|
||||
*/
|
||||
(function(window) {
|
||||
var rootDescribes = new Describes(window);
|
||||
var describePath = [];
|
||||
rootDescribes.collectMode();
|
||||
|
||||
var JASMINE_TYPE = 'jasmine test case';
|
||||
TestCase('Jasmine Adapter Tests', null, JASMINE_TYPE);
|
||||
|
||||
var jasminePlugin = {
|
||||
name:'jasmine',
|
||||
|
||||
getTestRunsConfigurationFor: function(testCaseInfos, expressions, testRunsConfiguration) {
|
||||
for (var i = 0; i < testCaseInfos.length; i++) {
|
||||
if (testCaseInfos[i].getType() == JASMINE_TYPE) {
|
||||
testRunsConfiguration.push(new jstestdriver.TestRunConfiguration(testCaseInfos[i], []));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
runTestConfiguration: function(testRunConfiguration, onTestDone, onTestRunConfigurationComplete){
|
||||
if (testRunConfiguration.getTestCaseInfo().getType() != JASMINE_TYPE) return false;
|
||||
|
||||
var jasmineEnv = jasmine.currentEnv_ = new jasmine.Env();
|
||||
rootDescribes.playback();
|
||||
var specLog = jstestdriver.console.log_ = [];
|
||||
var start;
|
||||
jasmineEnv.specFilter = function(spec) {
|
||||
return rootDescribes.isExclusive(spec);
|
||||
};
|
||||
jasmineEnv.reporter = {
|
||||
log: function(str){
|
||||
specLog.push(str);
|
||||
},
|
||||
|
||||
reportRunnerStarting: function(runner) { },
|
||||
|
||||
reportSpecStarting: function(spec) {
|
||||
specLog = jstestdriver.console.log_ = [];
|
||||
start = new Date().getTime();
|
||||
},
|
||||
|
||||
reportSpecResults: function(spec) {
|
||||
var suite = spec.suite;
|
||||
var results = spec.results();
|
||||
if (results.skipped) return;
|
||||
var end = new Date().getTime();
|
||||
var messages = [];
|
||||
var resultItems = results.getItems();
|
||||
var state = 'passed';
|
||||
for ( var i = 0; i < resultItems.length; i++) {
|
||||
if (!resultItems[i].passed()) {
|
||||
state = resultItems[i].message.match(/AssertionError:/) ? 'error' : 'failed';
|
||||
messages.push({
|
||||
message: resultItems[i].toString(),
|
||||
name: resultItems[i].trace.name,
|
||||
stack: formatStack(resultItems[i].trace.stack)
|
||||
});
|
||||
}
|
||||
}
|
||||
onTestDone(
|
||||
new jstestdriver.TestResult(
|
||||
suite.getFullName(),
|
||||
spec.description,
|
||||
state,
|
||||
jstestdriver.angular.toJson(messages),
|
||||
specLog.join('\n'),
|
||||
end - start));
|
||||
},
|
||||
|
||||
reportSuiteResults: function(suite) {},
|
||||
|
||||
reportRunnerResults: function(runner) {
|
||||
onTestRunConfigurationComplete();
|
||||
}
|
||||
};
|
||||
jasmineEnv.execute();
|
||||
return true;
|
||||
},
|
||||
|
||||
onTestsFinish: function(){
|
||||
jasmine.currentEnv_ = null;
|
||||
rootDescribes.collectMode();
|
||||
}
|
||||
};
|
||||
jstestdriver.pluginRegistrar.register(jasminePlugin);
|
||||
|
||||
function formatStack(stack) {
|
||||
var lines = (stack||'').split(/\r?\n/);
|
||||
var frames = [];
|
||||
for (i = 0; i < lines.length; i++) {
|
||||
if (!lines[i].match(/\/jasmine[\.-]/)) {
|
||||
frames.push(lines[i].replace(/https?:\/\/\w+(:\d+)?\/test\//, '').replace(/^\s*/, ' '));
|
||||
}
|
||||
}
|
||||
return frames.join('\n');
|
||||
}
|
||||
|
||||
function noop(){}
|
||||
function Describes(window){
|
||||
var describes = {};
|
||||
var beforeEachs = {};
|
||||
var afterEachs = {};
|
||||
// Here we store:
|
||||
// 0: everyone runs
|
||||
// 1: run everything under ddescribe
|
||||
// 2: run only iits (ignore ddescribe)
|
||||
var exclusive = 0;
|
||||
var collectMode = true;
|
||||
intercept('describe', describes);
|
||||
intercept('xdescribe', describes);
|
||||
intercept('beforeEach', beforeEachs);
|
||||
intercept('afterEach', afterEachs);
|
||||
|
||||
function intercept(functionName, collection){
|
||||
window[functionName] = function(desc, fn){
|
||||
if (collectMode) {
|
||||
collection[desc] = function(){
|
||||
jasmine.getEnv()[functionName](desc, fn);
|
||||
};
|
||||
} else {
|
||||
jasmine.getEnv()[functionName](desc, fn);
|
||||
}
|
||||
};
|
||||
}
|
||||
window.ddescribe = function(name, fn){
|
||||
if (exclusive < 1) {
|
||||
exclusive = 1; // run ddescribe only
|
||||
}
|
||||
window.describe(name, function(){
|
||||
var oldIt = window.it;
|
||||
window.it = function(name, fn){
|
||||
fn.exclusive = 1; // run anything under ddescribe
|
||||
jasmine.getEnv().it(name, fn);
|
||||
};
|
||||
try {
|
||||
fn.call(this);
|
||||
} finally {
|
||||
window.it = oldIt;
|
||||
};
|
||||
});
|
||||
};
|
||||
window.iit = function(name, fn){
|
||||
exclusive = fn.exclusive = 2; // run only iits
|
||||
jasmine.getEnv().it(name, fn);
|
||||
};
|
||||
|
||||
|
||||
this.collectMode = function() {
|
||||
collectMode = true;
|
||||
exclusive = 0; // run everything
|
||||
};
|
||||
this.playback = function(){
|
||||
collectMode = false;
|
||||
playback(beforeEachs);
|
||||
playback(afterEachs);
|
||||
playback(describes);
|
||||
|
||||
function playback(set) {
|
||||
for ( var name in set) {
|
||||
set[name]();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.isExclusive = function(spec) {
|
||||
if (exclusive) {
|
||||
var blocks = spec.queue.blocks;
|
||||
for ( var i = 0; i < blocks.length; i++) {
|
||||
if (blocks[i].func.exclusive >= exclusive) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
})(window);
|
||||
|
||||
// Patch Jasmine for proper stack traces
|
||||
jasmine.Spec.prototype.fail = function (e) {
|
||||
var expectationResult = new jasmine.ExpectationResult({
|
||||
passed: false,
|
||||
message: e ? jasmine.util.formatException(e) : 'Exception'
|
||||
});
|
||||
// PATCH
|
||||
if (e) {
|
||||
expectationResult.trace = e;
|
||||
}
|
||||
this.results_.addResult(expectationResult);
|
||||
};
|
||||
|
23
external/jasmineAdapter/MIT.LICENSE
vendored
@ -1,23 +0,0 @@
|
||||
Copyright (c) 2010
|
||||
Misko Hevery <misko@hevery.com>
|
||||
Olmo Maldonado <me@ibolmo.com>
|
||||
Christoph Pojer <christoph.pojer@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
24
external/jpgjs/jpg.js
vendored
@ -637,7 +637,10 @@ var JpegImage = (function jpegImage() {
|
||||
tableData[z] = data[offset++];
|
||||
}
|
||||
} else if ((quantizationTableSpec >> 4) === 1) { //16 bit
|
||||
tableData[j] = readUint16();
|
||||
for (j = 0; j < 64; j++) {
|
||||
var z = dctZigZag[j];
|
||||
tableData[z] = readUint16();
|
||||
}
|
||||
} else
|
||||
throw "DQT: invalid table spec";
|
||||
quantizationTables[quantizationTableSpec & 15] = tableData;
|
||||
@ -652,7 +655,8 @@ var JpegImage = (function jpegImage() {
|
||||
frame.precision = data[offset++];
|
||||
frame.scanLines = readUint16();
|
||||
frame.samplesPerLine = readUint16();
|
||||
frame.components = [];
|
||||
frame.components = {};
|
||||
frame.componentsOrder = [];
|
||||
var componentsCount = data[offset++], componentId;
|
||||
var maxH = 0, maxV = 0;
|
||||
for (i = 0; i < componentsCount; i++) {
|
||||
@ -660,6 +664,7 @@ var JpegImage = (function jpegImage() {
|
||||
var h = data[offset + 1] >> 4;
|
||||
var v = data[offset + 1] & 15;
|
||||
var qId = data[offset + 2];
|
||||
frame.componentsOrder.push(componentId);
|
||||
frame.components[componentId] = {
|
||||
h: h,
|
||||
v: v,
|
||||
@ -728,14 +733,13 @@ var JpegImage = (function jpegImage() {
|
||||
this.jfif = jfif;
|
||||
this.adobe = adobe;
|
||||
this.components = [];
|
||||
for (var id in frame.components) {
|
||||
if (frame.components.hasOwnProperty(id)) {
|
||||
this.components.push({
|
||||
lines: buildComponentData(frame, frame.components[id]),
|
||||
scaleX: frame.components[id].h / frame.maxH,
|
||||
scaleY: frame.components[id].v / frame.maxV
|
||||
});
|
||||
}
|
||||
for (var i = 0; i < frame.componentsOrder.length; i++) {
|
||||
var component = frame.components[frame.componentsOrder[i]];
|
||||
this.components.push({
|
||||
lines: buildComponentData(frame, component),
|
||||
scaleX: component.h / frame.maxH,
|
||||
scaleY: component.v / frame.maxV
|
||||
});
|
||||
}
|
||||
},
|
||||
getData: function getData(width, height) {
|
||||
|
BIN
external/jsTestDriver/JsTestDriver-1.3.3d.jar
vendored
202
external/jsTestDriver/LICENSE-2.0.txt
vendored
@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
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.
|
3
external/webL10n/README.md
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
The source code for the library can be found at
|
||||
|
||||
https://github.com/fabi1cazenave/webL10n
|
322
external/webL10n/l10n.js
vendored
Normal file
@ -0,0 +1,322 @@
|
||||
/* Copyright (c) 2011-2012 Fabien Cazenave, Mozilla.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
/*
|
||||
Additional modifications for PDF.js project:
|
||||
- Loading resources from <script type='application/l10n'>;
|
||||
- Disabling language initialization on page loading;
|
||||
- Add fallback argument to the translateString.
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
(function(window) {
|
||||
var gL10nData = {};
|
||||
var gTextData = '';
|
||||
var gLanguage = '';
|
||||
|
||||
// parser
|
||||
|
||||
function evalString(text) {
|
||||
return text.replace(/\\\\/g, '\\')
|
||||
.replace(/\\n/g, '\n')
|
||||
.replace(/\\r/g, '\r')
|
||||
.replace(/\\t/g, '\t')
|
||||
.replace(/\\b/g, '\b')
|
||||
.replace(/\\f/g, '\f')
|
||||
.replace(/\\{/g, '{')
|
||||
.replace(/\\}/g, '}')
|
||||
.replace(/\\"/g, '"')
|
||||
.replace(/\\'/g, "'");
|
||||
}
|
||||
|
||||
function parseProperties(text, lang) {
|
||||
var reBlank = /^\s*|\s*$/;
|
||||
var reComment = /^\s*#|^\s*$/;
|
||||
var reSection = /^\s*\[(.*)\]\s*$/;
|
||||
var reImport = /^\s*@import\s+url\((.*)\)\s*$/i;
|
||||
|
||||
// parse the *.properties file into an associative array
|
||||
var currentLang = '*';
|
||||
var supportedLang = [];
|
||||
var skipLang = false;
|
||||
var data = [];
|
||||
var match = '';
|
||||
var entries = text.replace(reBlank, '').split(/[\r\n]+/);
|
||||
for (var i = 0; i < entries.length; i++) {
|
||||
var line = entries[i];
|
||||
|
||||
// comment or blank line?
|
||||
if (reComment.test(line))
|
||||
continue;
|
||||
|
||||
// section start?
|
||||
if (reSection.test(line)) {
|
||||
match = reSection.exec(line);
|
||||
currentLang = match[1];
|
||||
skipLang = (currentLang != lang) && (currentLang != '*') &&
|
||||
(currentLang != lang.substring(0, 2));
|
||||
continue;
|
||||
} else if (skipLang) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// @import rule?
|
||||
if (reImport.test(line)) {
|
||||
match = reImport.exec(line);
|
||||
}
|
||||
|
||||
// key-value pair
|
||||
var tmp = line.split('=');
|
||||
if (tmp.length > 1)
|
||||
data[tmp[0]] = evalString(tmp[1]);
|
||||
}
|
||||
|
||||
// find the attribute descriptions, if any
|
||||
for (var key in data) {
|
||||
var id, prop, index = key.lastIndexOf('.');
|
||||
if (index > 0) { // attribute
|
||||
id = key.substring(0, index);
|
||||
prop = key.substr(index + 1);
|
||||
} else { // textContent, could be innerHTML as well
|
||||
id = key;
|
||||
prop = 'textContent';
|
||||
}
|
||||
if (!gL10nData[id])
|
||||
gL10nData[id] = {};
|
||||
gL10nData[id][prop] = data[key];
|
||||
}
|
||||
}
|
||||
|
||||
function parse(text, lang) {
|
||||
gTextData += text;
|
||||
// we only support *.properties files at the moment
|
||||
return parseProperties(text, lang);
|
||||
}
|
||||
|
||||
// load and parse the specified resource file
|
||||
function loadResource(href, lang, onSuccess, onFailure) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', href, true);
|
||||
xhr.overrideMimeType('text/plain; charset=utf-8');
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState == 4) {
|
||||
if (xhr.status == 200 || xhr.status == 0) {
|
||||
parse(xhr.responseText, lang);
|
||||
if (onSuccess)
|
||||
onSuccess();
|
||||
} else {
|
||||
if (onFailure)
|
||||
onFailure();
|
||||
}
|
||||
}
|
||||
};
|
||||
xhr.send(null);
|
||||
}
|
||||
|
||||
// load and parse all resources for the specified locale
|
||||
function loadLocale(lang, callback) {
|
||||
clear();
|
||||
|
||||
// check all <link type="application/l10n" href="..." /> nodes
|
||||
// and load the resource files
|
||||
var langLinks = document.querySelectorAll('link[type="application/l10n"]');
|
||||
var langLinksCount = langLinks.length;
|
||||
var langScripts = document.querySelectorAll('script[type="application/l10n"]');
|
||||
var langScriptCount = langScripts.length;
|
||||
var langCount = langLinksCount + langScriptCount;
|
||||
|
||||
// start the callback when all resources are loaded
|
||||
var onResourceLoaded = null;
|
||||
var gResourceCount = 0;
|
||||
onResourceLoaded = function() {
|
||||
gResourceCount++;
|
||||
if (gResourceCount >= langCount) {
|
||||
// execute the [optional] callback
|
||||
if (callback)
|
||||
callback();
|
||||
// fire a 'localized' DOM event
|
||||
var evtObject = document.createEvent('Event');
|
||||
evtObject.initEvent('localized', false, false);
|
||||
evtObject.language = lang;
|
||||
window.dispatchEvent(evtObject);
|
||||
}
|
||||
}
|
||||
|
||||
// load all resource files
|
||||
function l10nResourceLink(link) {
|
||||
var href = link.href;
|
||||
var type = link.type;
|
||||
this.load = function(lang, callback) {
|
||||
var applied = lang;
|
||||
loadResource(href, lang, callback, function() {
|
||||
console.warn(href + ' not found.');
|
||||
applied = '';
|
||||
});
|
||||
return applied; // return lang if found, an empty string if not found
|
||||
};
|
||||
}
|
||||
|
||||
gLanguage = lang;
|
||||
for (var i = 0; i < langLinksCount; i++) {
|
||||
var resource = new l10nResourceLink(langLinks[i]);
|
||||
var rv = resource.load(lang, onResourceLoaded);
|
||||
if (rv != lang) // lang not found, used default resource instead
|
||||
gLanguage = '';
|
||||
}
|
||||
for (var i = 0; i < langScriptCount; i++) {
|
||||
var scriptText = langScripts[i].text;
|
||||
parse(scriptText, lang);
|
||||
onResourceLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
// fetch an l10n object, warn if not found
|
||||
function getL10nData(key) {
|
||||
var data = gL10nData[key];
|
||||
if (!data)
|
||||
console.warn('[l10n] #' + key + ' missing for [' + gLanguage + ']');
|
||||
return data;
|
||||
}
|
||||
|
||||
// replace {{arguments}} with their values
|
||||
function substArguments(str, args) {
|
||||
var reArgs = /\{\{\s*([a-zA-Z\.]+)\s*\}\}/;
|
||||
var match = reArgs.exec(str);
|
||||
while (match) {
|
||||
if (!match || match.length < 2)
|
||||
return str; // argument key not found
|
||||
|
||||
var arg = match[1];
|
||||
var sub = '';
|
||||
if (arg in args) {
|
||||
sub = args[arg];
|
||||
} else if (arg in gL10nData) {
|
||||
sub = gL10nData[arg].textContent;
|
||||
} else {
|
||||
console.warn('[l10n] could not find argument {{' + arg + '}}');
|
||||
return str;
|
||||
}
|
||||
|
||||
str = str.substring(0, match.index) + sub +
|
||||
str.substr(match.index + match[0].length);
|
||||
match = reArgs.exec(str);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
// translate a string
|
||||
function translateString(key, args, fallback) {
|
||||
var data = getL10nData(key);
|
||||
if (!data && fallback)
|
||||
data = {textContent: fallback};
|
||||
if (!data)
|
||||
return '{{' + key + '}}';
|
||||
return substArguments(data.textContent, args);
|
||||
}
|
||||
|
||||
// translate an HTML element
|
||||
function translateElement(element) {
|
||||
if (!element || !element.dataset)
|
||||
return;
|
||||
|
||||
// get the related l10n object
|
||||
var key = element.dataset.l10nId;
|
||||
var data = getL10nData(key);
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
// get arguments (if any)
|
||||
// TODO: more flexible parser?
|
||||
var args;
|
||||
if (element.dataset.l10nArgs) try {
|
||||
args = JSON.parse(element.dataset.l10nArgs);
|
||||
} catch (e) {
|
||||
console.warn('[l10n] could not parse arguments for #' + key + '');
|
||||
}
|
||||
|
||||
// translate element
|
||||
// TODO: security check?
|
||||
for (var k in data)
|
||||
element[k] = substArguments(data[k], args);
|
||||
}
|
||||
|
||||
// translate an HTML subtree
|
||||
function translateFragment(element) {
|
||||
element = element || document.querySelector('html');
|
||||
|
||||
// check all translatable children (= w/ a `data-l10n-id' attribute)
|
||||
var children = element.querySelectorAll('*[data-l10n-id]');
|
||||
var elementCount = children.length;
|
||||
for (var i = 0; i < elementCount; i++)
|
||||
translateElement(children[i]);
|
||||
|
||||
// translate element itself if necessary
|
||||
if (element.dataset.l10nId)
|
||||
translateElement(element);
|
||||
}
|
||||
|
||||
// clear all l10n data
|
||||
function clear() {
|
||||
gL10nData = {};
|
||||
gTextData = '';
|
||||
gLanguage = '';
|
||||
}
|
||||
|
||||
/*
|
||||
// load the default locale on startup
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
var lang = navigator.language;
|
||||
if (navigator.mozSettings) {
|
||||
var req = navigator.mozSettings.getLock().get('language.current');
|
||||
req.onsuccess = function() {
|
||||
loadLocale(req.result['language.current'] || lang, translateFragment);
|
||||
};
|
||||
req.onerror = function() {
|
||||
loadLocale(lang, translateFragment);
|
||||
};
|
||||
} else {
|
||||
loadLocale(lang, translateFragment);
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
// Public API
|
||||
document.mozL10n = {
|
||||
// get a localized string
|
||||
get: translateString,
|
||||
|
||||
// get|set the document language and direction
|
||||
get language() {
|
||||
return {
|
||||
// get|set the document language (ISO-639-1)
|
||||
get code() { return gLanguage; },
|
||||
set code(lang) { loadLocale(lang, translateFragment); },
|
||||
|
||||
// get the direction (ltr|rtl) of the current language
|
||||
get direction() {
|
||||
// http://www.w3.org/International/questions/qa-scripts
|
||||
// Arabic, Hebrew, Farsi, Pashto, Urdu
|
||||
var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];
|
||||
return (rtlList.indexOf(gLanguage) >= 0) ? 'rtl' : 'ltr';
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
})(this);
|
8
l10n/ar/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>ar</em:locale>
|
||||
<em:name>عارض PDF</em:name>
|
||||
<em:description>يستخدم HTML5 لعرض ملفات PDF مباشره من خلال Firefox.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
31
l10n/ar/viewer.properties
Normal file
@ -0,0 +1,31 @@
|
||||
bookmark.title=النافذه الحالية (نسخ أو فتح نافذة جديدة)
|
||||
previous.title=السابق
|
||||
next.title=التالي
|
||||
print.title=طباعة
|
||||
download.title=تحميل
|
||||
zoom_out.title=التصغير
|
||||
zoom_in.title=تكبير
|
||||
error_more_info=مزيد من المعلومات
|
||||
error_less_info=معلومات أقل
|
||||
error_close=أغلق
|
||||
error_build=PDF.JS بناء: {{build}}
|
||||
error_message=رسالة: {{message}}
|
||||
error_stack=المكدس: {{stack}}
|
||||
error_file=ملف: {{file}}
|
||||
error_line=سطر: {{line}}
|
||||
page_scale_width=عرض الصفحه
|
||||
page_scale_fit=تحجيم الصفحه
|
||||
page_scale_auto=تكبير تلقائي
|
||||
page_scale_actual=الحجم الفعلي
|
||||
toggle_slider.title=تبديل المتزلج
|
||||
thumbs.title=اظهار الصور المصغرة
|
||||
outline.title=عرض مخطط الوثيقه
|
||||
loading=تحميل ... {{percent}}٪
|
||||
loading_error_indicator=خطأ
|
||||
loading_error=حدث خطأ أثناء تحميل وثيقه بي دي اف
|
||||
rendering_error=حدث خطأ اثناء رسم الصفحه
|
||||
page_label=الصفحة:
|
||||
page_of=من {{pageCount}}
|
||||
no_outline=لايوجد مخطط
|
||||
open_file.title=فتح ملف
|
||||
text_annotation_type=[{{type}} ملاحظة]
|
8
l10n/da/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>da</em:locale>
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:description>Benytter HTML5 til at vise PDF-filer direkte i Firefox.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
31
l10n/da/viewer.properties
Normal file
@ -0,0 +1,31 @@
|
||||
bookmark.title=Aktuel visning (kopier eller åbn i et nyt vindue)
|
||||
previous.title=Forrige
|
||||
next.title=Næste
|
||||
print.title=Udskriv
|
||||
download.title=Hent
|
||||
zoom_out.title=Zoom ud
|
||||
zoom_in.title=Zoom ind
|
||||
error_more_info=Mere information
|
||||
error_less_info=Mindre information
|
||||
error_close=Luk
|
||||
error_build=PDF.JS Build: {{build}}
|
||||
error_message=Besked: {{message}}
|
||||
error_stack=Stak: {{stack}}
|
||||
error_file=Fil: {{file}}
|
||||
error_line=Linje: {{line}}
|
||||
page_scale_width=Sidebredde
|
||||
page_scale_fit=Helside
|
||||
page_scale_auto=Automatisk zoom
|
||||
page_scale_actual=Faktisk størrelse
|
||||
toggle_slider.title=Skift Slider
|
||||
thumbs.title=Vis thumbnails
|
||||
outline.title=Vis dokumentoversigt
|
||||
loading=Indlæser... {{percent}}%
|
||||
loading_error_indicator=Fejl
|
||||
loading_error=Der skete en fejl under indlæsningen af PDF-filen
|
||||
rendering_error=Der skete en fejl under gengivelsen af PDF-filen
|
||||
page_label=Side:
|
||||
page_of=af {{pageCount}}
|
||||
no_outline=Ingen dokumentoversigt tilgængelig
|
||||
open_file.title=Åbn fil
|
||||
text_annotation_type=[{{type}} Kommentar]
|
8
l10n/de/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>de</em:locale>
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:description>Nutzt HTML5 um PDFs direkt in Firefox anzuzeigen.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
31
l10n/de/viewer.properties
Normal file
@ -0,0 +1,31 @@
|
||||
bookmark.title=Aktuelle Ansicht (Kopieren oder in einem neuen Fenster öffnen)
|
||||
previous.title=Zurück
|
||||
next.title=Vor
|
||||
print.title=Drucken
|
||||
download.title=Runterladen
|
||||
zoom_out.title=Verkleinern
|
||||
zoom_in.title=Vergrößern
|
||||
error_more_info=Mehr Info
|
||||
error_less_info=Weniger Info
|
||||
error_close=Schließen
|
||||
error_build=PDF.JS Build: {{build}}
|
||||
error_message=Nachricht: {{message}}
|
||||
error_stack=Stack: {{stack}}
|
||||
error_file=Datei: {{file}}
|
||||
error_line=Zeile: {{line}}
|
||||
page_scale_width=Seitenbreite
|
||||
page_scale_fit=Ganze Seite
|
||||
page_scale_auto=Automatisch
|
||||
page_scale_actual=Originalgröße
|
||||
toggle_slider.title=Thumbnails ein-/ausblenden
|
||||
thumbs.title=Zeige Thumbnails
|
||||
outline.title=Zeige Inhaltsverzeichnis
|
||||
loading=Lade... {{percent}}%
|
||||
loading_error_indicator=Fehler
|
||||
loading_error=Das PDF konnte nicht geladen werden.
|
||||
rendering_error=Das PDF konnte nicht angezeigt werden.
|
||||
page_label=Seite:
|
||||
page_of=von {{pageCount}}
|
||||
no_outline=Kein Inhaltsverzeichnis verfügbar
|
||||
open_file.title=Öffne Datei
|
||||
text_annotation_type=[{{type}} Annotation]
|
8
l10n/en-US/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>en-US</em:locale>
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:description>Uses HTML5 to display PDF files directly in Firefox.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
42
l10n/en-US/viewer.properties
Normal file
@ -0,0 +1,42 @@
|
||||
bookmark.title=Current view (copy or open in new window)
|
||||
previous.title=Previous Page
|
||||
next.title=Next Page
|
||||
print.title=Print
|
||||
download.title=Download
|
||||
zoom_out.title=Zoom Out
|
||||
zoom_in.title=Zoom In
|
||||
error_more_info=More Information
|
||||
error_less_info=Less Information
|
||||
error_close=Close
|
||||
error_build=PDF.JS Build: {{build}}
|
||||
error_message=Message: {{message}}
|
||||
error_stack=Stack: {{stack}}
|
||||
error_file=File: {{file}}
|
||||
error_line=Line: {{line}}
|
||||
page_scale_width=Page Width
|
||||
page_scale_fit=Page Fit
|
||||
page_scale_auto=Automatic Zoom
|
||||
page_scale_actual=Actual Size
|
||||
toggle_slider.title=Toggle Slider
|
||||
thumbs.title=Show Thumbnails
|
||||
outline.title=Show Document Outline
|
||||
loading=Loading... {{percent}}%
|
||||
loading_error_indicator=Error
|
||||
loading_error=An error occurred while loading the PDF.
|
||||
rendering_error=An error occurred while rendering the page.
|
||||
page_label=Page:
|
||||
page_of=of {{pageCount}}
|
||||
no_outline=No Outline Available
|
||||
open_file.title=Open File
|
||||
text_annotation_type=[{{type}} Annotation]
|
||||
toggle_slider_label=Toggle Slider
|
||||
thumbs_label=Thumbnails
|
||||
outline_label=Document Outline
|
||||
bookmark_label=Current View
|
||||
previous_label=Previous
|
||||
next_label=Next
|
||||
print_label=Print
|
||||
download_label=Download
|
||||
zoom_out_label=Zoom Out
|
||||
zoom_in_label=Zoom In
|
||||
zoom.title=Zoom
|
8
l10n/it/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>it</em:locale>
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:description>Usa HTML5 per visualizzare i file PDF direttamente in Firefox.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
31
l10n/it/viewer.properties
Normal file
@ -0,0 +1,31 @@
|
||||
bookmark.title=Visualizzazione corrente (copia o apri in una nuova finestra)
|
||||
previous.title=Precedente
|
||||
next.title=Successiva
|
||||
print.title=Stampa
|
||||
download.title=Download
|
||||
zoom_out.title=Riduci Zoom
|
||||
zoom_in.title=Aumenta Zoom
|
||||
error_more_info=Più Informazioni
|
||||
error_less_info=Meno Informazioni
|
||||
error_close=Chiudi
|
||||
error_build=PDF.JS Build: {{build}}
|
||||
error_message=Messaggio: {{message}}
|
||||
error_stack=Stack: {{stack}}
|
||||
error_file=File: {{file}}
|
||||
error_line=Linea: {{line}}
|
||||
page_scale_width=Adatta alla Larghezza
|
||||
page_scale_fit=Adatta alla Pagina
|
||||
page_scale_auto=Zoom Automatico
|
||||
page_scale_actual=Dimensione Attuale
|
||||
toggle_slider.title=Visualizza Riquadro Laterale
|
||||
thumbs.title=Mostra Miniature
|
||||
outline.title=Mostra Indice Documento
|
||||
loading=Caricamento... {{percent}}%
|
||||
loading_error_indicator=Errore
|
||||
loading_error=È accaduto un errore durante il caricamento del PDF.
|
||||
rendering_error=È accaduto un errore durante il rendering della pagina.
|
||||
page_label=Pagina:
|
||||
page_of=di {{pageCount}}
|
||||
no_outline=Nessun Indice Disponibile
|
||||
open_file.title=Apri File
|
||||
text_annotation_type=[{{type}} Annotazione]
|
8
l10n/pt-BR/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>pt-BR</em:locale>
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:description>Aprensenta PDFs no browser usando a tecnologia HTML5.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
31
l10n/pt-BR/viewer.properties
Normal file
@ -0,0 +1,31 @@
|
||||
bookmark.title=Marcar posição atual (bookmark)
|
||||
previous.title=Página anterior
|
||||
next.title=Próxima página
|
||||
print.title=Imprimir
|
||||
download.title=Baixar arquivo
|
||||
zoom_out.title=Diminuir Zoom
|
||||
zoom_in.title=Aumentar Zoom
|
||||
error_more_info=Mais informações
|
||||
error_less_info=Menos informações
|
||||
error_close=Fechar
|
||||
error_build=PDF.JS Versão: {{build}}
|
||||
error_message=Mensagem: {{message}}
|
||||
error_stack=Pilha: {{stack}}
|
||||
error_file=Arquivo: {{file}}
|
||||
error_line=Linha: {{line}}
|
||||
page_scale_width=Largura da página
|
||||
page_scale_fit=Página inteira
|
||||
page_scale_auto=Zoom automático
|
||||
page_scale_actual=Tamanho original
|
||||
toggle_slider.title=Abrir/fechar aba lateral
|
||||
thumbs.title=Mostrar miniaturas
|
||||
outline.title=Mostrar índice
|
||||
loading=Carregando... {{percent}}%
|
||||
loading_error_indicator=Erro
|
||||
loading_error=Um erro ocorreu ao carregar o arquivo.
|
||||
rendering_error=Um erro ocorreu ao apresentar a página.
|
||||
page_label=Página:
|
||||
page_of=de {{pageCount}}
|
||||
no_outline=Índice não disponível
|
||||
open_file.title=Abrir arquivo
|
||||
text_annotation_type=[{{type}} Anotações]
|
8
l10n/ru/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>ru</em:locale>
|
||||
<em:name>PDF Viewer</em:name>
|
||||
<em:description>Показывает файлы PDF непосредственно в Firefox используя HTML5.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
42
l10n/ru/viewer.properties
Normal file
@ -0,0 +1,42 @@
|
||||
bookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне)
|
||||
previous.title=Предыдущая страница
|
||||
next.title=Следующая страница
|
||||
print.title=Печать
|
||||
download.title=Загрузить
|
||||
zoom_out.title=Уменьшить
|
||||
zoom_in.title=Увеличить
|
||||
error_more_info=Детали
|
||||
error_less_info=Скрыть детали
|
||||
error_close=Закрыть
|
||||
error_build=PDF.JS компиляция: {{build}}
|
||||
error_message=Сообщение: {{message}}
|
||||
error_stack=Стeк: {{stack}}
|
||||
error_file=Файл: {{file}}
|
||||
error_line=Строка: {{line}}
|
||||
page_scale_width=По ширине страницы
|
||||
page_scale_fit=Во всю страницу
|
||||
page_scale_auto=Авто
|
||||
page_scale_actual=Настоящий размер
|
||||
toggle_slider.title=Открыть/закрыть вспомогательную панель
|
||||
thumbs.title=Показать уменьшенные изображения
|
||||
outline.title=Показать содержание документа
|
||||
loading=Загрузка... {{percent}}%
|
||||
loading_error_indicator=Ошибка
|
||||
loading_error=Произошла ошибка во время загрузки PDF.
|
||||
rendering_error=Произошла ошибка во время создания страницы.
|
||||
page_label=Страница:
|
||||
page_of=из {{pageCount}}
|
||||
no_outline=Содержание не доступно
|
||||
open_file.title=Открыть файл
|
||||
text_annotation_type=[Аннотация {{type}}]
|
||||
toggle_slider_label=Вспомогательная панель
|
||||
thumbs_label=Уменьшенные изображения
|
||||
outline_label=Содержание документа
|
||||
bookmark_label=Текущий вид
|
||||
previous_label=Предыдущая
|
||||
next_label=Следующая
|
||||
print_label=Печать
|
||||
download_label=Загрузить
|
||||
zoom_out_label=Уменьшить
|
||||
zoom_in_label=Увеличить
|
||||
zoom.title=Масштаб
|
8
l10n/sr/metadata.inc
Normal file
@ -0,0 +1,8 @@
|
||||
<em:localized>
|
||||
<Description>
|
||||
<em:locale>sr</em:locale>
|
||||
<em:name>ПДФ читач</em:name>
|
||||
<em:description>Користи ХТМЛ5 да би приказао ПДФ датотеке директно у Фајерфоксу.</em:description>
|
||||
</Description>
|
||||
</em:localized>
|
||||
|
42
l10n/sr/viewer.properties
Normal file
@ -0,0 +1,42 @@
|
||||
bookmark.title=Тренутни приказ (Умножити или отворити у новом прозору)
|
||||
previous.title=Предходна страна
|
||||
next.title=Следећа страна
|
||||
print.title=Штампај
|
||||
download.title=Преузми
|
||||
zoom_out.title=Умањи
|
||||
zoom_in.title=Увећај
|
||||
error_more_info=Више информација
|
||||
error_less_info=Мање информација
|
||||
error_close=Затвори
|
||||
error_build=PDF.JS Build: {{build}}
|
||||
error_message=Message: {{message}}
|
||||
error_stack=Stack: {{stack}}
|
||||
error_file=File: {{file}}
|
||||
error_line=Line: {{line}}
|
||||
page_scale_width=Ширина странице
|
||||
page_scale_fit=Уклопи
|
||||
page_scale_auto=Увећај аутоматски
|
||||
page_scale_actual=Стварна величина
|
||||
toggle_slider.title=Клизач
|
||||
thumbs.title=Прикажи у сличицама
|
||||
outline.title=Прикажи у линијама
|
||||
loading=Учитавање... {{percent}}%
|
||||
loading_error_indicator=Грешка
|
||||
loading_error=Дошло је до грешке током учитавања ПДФ-а.
|
||||
rendering_error=Дошло је до грешке приликом приказивања стране.
|
||||
page_label=Страна:
|
||||
page_of=од {{pageCount}}
|
||||
no_outline=Нема линија
|
||||
open_file.title=Отвори датотеку
|
||||
text_annotation_type=[{{type}} Annotation]
|
||||
toggle_slider_label=Клизач
|
||||
thumbs_label=Сличице
|
||||
outline_label=Документи у линијама
|
||||
bookmark_label=Тренутни приказ
|
||||
previous_label=Предходна
|
||||
next_label=Следећа
|
||||
print_label=Штампај
|
||||
download_label=Преузми
|
||||
zoom_out_label=Умањи
|
||||
zoom_in_label=Увећај
|
||||
zoom.title=Скала
|
42
l10n/xx/viewer.properties
Normal file
@ -0,0 +1,42 @@
|
||||
bookmark.title=<<<_¢ȗггεпţ ṿiεẂ (¢OÞӳ Oг OÞεп iп пεẂ ẂiпÐOẂ)_>>>
|
||||
previous.title=<<<_ÞгεṿiOȗ§ Þãģε_>>>
|
||||
next.title=<<<_пεӾţ Þãģε_>>>
|
||||
print.title=<<<_Þгiпţ_>>>
|
||||
download.title=<<<_ÐOẂпḻOãÐ_>>>
|
||||
zoom_out.title=<<<_ƩOOм Oȗţ_>>>
|
||||
zoom_in.title=<<<_ƩOOм iп_>>>
|
||||
error_more_info=<<<_мOгε iп£OгмãţiOп_>>>
|
||||
error_less_info=<<<_ḻ姧 iп£OгмãţiOп_>>>
|
||||
error_close=<<<_¢ḻO§ε_>>>
|
||||
error_build=<<<_ÞУ.ʃ§ ьȗiḻÐ: {{build}}_>>>
|
||||
error_message=<<<_м姧ãģε: {{message}}_>>>
|
||||
error_stack=<<<_§ţã¢қ: {{stack}}_>>>
|
||||
error_file=<<<_£iḻε: {{file}}_>>>
|
||||
error_line=<<<_ḻiпε: {{line}}_>>>
|
||||
page_scale_width=<<<_Þãģε ẂiÐţН_>>>
|
||||
page_scale_fit=<<<_Þãģε £iţ_>>>
|
||||
page_scale_auto=<<<_ãȗţOмãţi¢ ƩOOм_>>>
|
||||
page_scale_actual=<<<_ã¢ţȗãḻ §iƩε_>>>
|
||||
toggle_slider.title=<<<_ţOģģḻε §ḻiÐεг_>>>
|
||||
thumbs.title=<<<_§НOẂ ţНȗмьпãiḻ§_>>>
|
||||
outline.title=<<<_§НOẂ ÐO¢ȗмεпţ Oȗţḻiпε_>>>
|
||||
loading=<<<_ḻOãÐiпģ... {{percent}}%_>>>
|
||||
loading_error_indicator=<<<_εггOг_>>>
|
||||
loading_error=<<<_ãп εггOг O¢¢ȗггεÐ ẂНiḻε ḻOãÐiпģ ţНε ÞУ._>>>
|
||||
rendering_error=<<<_ãп εггOг O¢¢ȗггεÐ ẂНiḻε гεпÐεгiпģ ţНε Þãģε._>>>
|
||||
page_label=Þãģε:
|
||||
page_of=<<<_O£ {{pageCount}}_>>>
|
||||
no_outline=<<<_пO Oȗţḻiпε ãṿãiḻãьḻε_>>>
|
||||
open_file.title=<<<_OÞεп £iḻε_>>>
|
||||
text_annotation_type=<<<_[{{type}} ãппOţãţiOп]_>>>
|
||||
toggle_slider_label=<<<_ţOģģḻε §ḻiÐεг_>>>
|
||||
thumbs_label=<<<_ţНȗмьпãiḻ§_>>>
|
||||
outline_label=<<<_ÐO¢ȗмεпţ Oȗţḻiпε_>>>
|
||||
bookmark_label=<<<_¢ȗггεпţ ṿiεẂ_>>>
|
||||
previous_label=<<<_ÞгεṿiOȗ§_>>>
|
||||
next_label=<<<_пεӾţ_>>>
|
||||
print_label=<<<_Þгiпţ_>>>
|
||||
download_label=<<<_ÐOẂпḻOãÐ_>>>
|
||||
zoom_out_label=<<<_ƩOOм Oȗţ_>>>
|
||||
zoom_in_label=<<<_ƩOOм iп_>>>
|
||||
zoom.title=<<<_ƩOOм_>>>
|
192
make.js
@ -33,6 +33,7 @@ target.all = function() {
|
||||
//
|
||||
target.web = function() {
|
||||
target.production();
|
||||
target.locale();
|
||||
target.extension();
|
||||
target.pagesrepo();
|
||||
|
||||
@ -40,8 +41,13 @@ target.web = function() {
|
||||
echo();
|
||||
echo('### Creating web site');
|
||||
|
||||
var GH_PAGES_SRC_FILES = [
|
||||
'web/*',
|
||||
'external/webL10n/l10n.js'
|
||||
];
|
||||
|
||||
cp(BUILD_TARGET, GH_PAGES_DIR + BUILD_TARGET);
|
||||
cp('-R', 'web/*', GH_PAGES_DIR + '/web');
|
||||
cp('-R', GH_PAGES_SRC_FILES, GH_PAGES_DIR + '/web');
|
||||
cp(FIREFOX_BUILD_DIR + '/*.xpi', FIREFOX_BUILD_DIR + '/*.rdf',
|
||||
GH_PAGES_DIR + EXTENSION_SRC_DIR + 'firefox/');
|
||||
cp(GH_PAGES_DIR + '/web/index.html.template', GH_PAGES_DIR + '/index.html');
|
||||
@ -56,6 +62,52 @@ target.web = function() {
|
||||
" and issue 'git commit' to push changes.");
|
||||
};
|
||||
|
||||
//
|
||||
// make locale
|
||||
// Creates localized resources for the viewer and extension.
|
||||
//
|
||||
target.locale = function() {
|
||||
var L10N_PATH = 'l10n';
|
||||
var METADATA_OUTPUT = 'extensions/firefox/metadata.inc';
|
||||
var VIEWER_OUTPUT = 'web/locale.properties';
|
||||
var DEFAULT_LOCALE = 'en-US';
|
||||
|
||||
cd(ROOT_DIR);
|
||||
echo();
|
||||
echo('### Building localization files');
|
||||
|
||||
var subfolders = ls(L10N_PATH);
|
||||
subfolders.sort();
|
||||
var metadataContent = '';
|
||||
var viewerOutput = '';
|
||||
for (var i = 0; i < subfolders.length; i++) {
|
||||
var locale = subfolders[i];
|
||||
var path = L10N_PATH + '/' + locale;
|
||||
if (!test('-d', path))
|
||||
continue;
|
||||
|
||||
if (!/^[a-z][a-z](-[A-Z][A-Z])?$/.test(locale)) {
|
||||
echo('Skipping invalid locale: ' + locale);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (test('-f', path + '/viewer.properties')) {
|
||||
var properties = cat(path + '/viewer.properties');
|
||||
if (locale == DEFAULT_LOCALE)
|
||||
viewerOutput = '[*]\n' + properties + '\n' + viewerOutput;
|
||||
else
|
||||
viewerOutput = viewerOutput + '[' + locale + ']\n' + properties + '\n';
|
||||
}
|
||||
|
||||
if (test('-f', path + '/metadata.inc')) {
|
||||
var metadata = cat(path + '/metadata.inc');
|
||||
metadataContent += metadata;
|
||||
}
|
||||
}
|
||||
viewerOutput.to(VIEWER_OUTPUT);
|
||||
metadataContent.to(METADATA_OUTPUT);
|
||||
};
|
||||
|
||||
//
|
||||
// make production
|
||||
// Creates production output (pdf.js, and corresponding changes to web/ files)
|
||||
@ -175,6 +227,7 @@ var EXTENSION_WEB_FILES =
|
||||
'web/viewer.css',
|
||||
'web/viewer.js',
|
||||
'web/viewer.html',
|
||||
'external/webL10n/l10n.js',
|
||||
'web/viewer-production.html'],
|
||||
EXTENSION_BASE_VERSION = 'f0f0418a9c6637981fe1182b9212c2d592774c7d',
|
||||
EXTENSION_VERSION_PREFIX = '0.3.',
|
||||
@ -222,11 +275,10 @@ target.firefox = function() {
|
||||
FIREFOX_EXTENSION_FILES_TO_COPY =
|
||||
['*.js',
|
||||
'*.rdf',
|
||||
'*.svg',
|
||||
'*.png',
|
||||
'install.rdf.in',
|
||||
'README.mozilla',
|
||||
'components',
|
||||
'../../LICENSE'];
|
||||
'../../LICENSE'],
|
||||
FIREFOX_EXTENSION_FILES =
|
||||
['bootstrap.js',
|
||||
'install.rdf',
|
||||
@ -234,17 +286,12 @@ target.firefox = function() {
|
||||
'icon64.png',
|
||||
'components',
|
||||
'content',
|
||||
'LICENSE'];
|
||||
FIREFOX_MC_EXTENSION_FILES =
|
||||
['bootstrap.js',
|
||||
'icon.png',
|
||||
'icon64.png',
|
||||
'components',
|
||||
'content',
|
||||
'LICENSE'];
|
||||
'LICENSE'],
|
||||
FIREFOX_EXTENSION_NAME = 'pdf.js.xpi',
|
||||
FIREFOX_AMO_EXTENSION_NAME = 'pdf.js.amo.xpi';
|
||||
|
||||
var LOCALE_CONTENT = cat('web/locale.properties');
|
||||
|
||||
target.production();
|
||||
target.buildnumber();
|
||||
cd(ROOT_DIR);
|
||||
@ -263,6 +310,7 @@ target.firefox = function() {
|
||||
// Copy a standalone version of pdf.js inside the content directory
|
||||
cp(BUILD_TARGET, FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR);
|
||||
cp('-R', EXTENSION_WEB_FILES, FIREFOX_BUILD_CONTENT_DIR + '/web');
|
||||
cp('web/locale.properties', FIREFOX_BUILD_CONTENT_DIR + '/web');
|
||||
rm(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer-production.html');
|
||||
|
||||
// Copy over the firefox extension snippet so we can inline pdf.js in it
|
||||
@ -271,6 +319,7 @@ target.firefox = function() {
|
||||
// Modify the viewer so it does all the extension-only stuff.
|
||||
cd(FIREFOX_BUILD_CONTENT_DIR + '/web');
|
||||
sed('-i', /.*PDFJSSCRIPT_INCLUDE_BUNDLE.*\n/, cat(ROOT_DIR + BUILD_TARGET), 'viewer-snippet-firefox-extension.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_LOCALE_DATA.*\n/, LOCALE_CONTENT, 'viewer-snippet-firefox-extension.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_REMOVE_CORE.*\n/g, '', 'viewer.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION.*\n/g, '', 'viewer.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION.*\n/, cat('viewer-snippet-firefox-extension.html'), 'viewer.html');
|
||||
@ -278,6 +327,8 @@ target.firefox = function() {
|
||||
|
||||
// We don't need pdf.js anymore since its inlined
|
||||
rm('-Rf', FIREFOX_BUILD_CONTENT_DIR + BUILD_DIR);
|
||||
rm(FIREFOX_BUILD_CONTENT_DIR + '/web/viewer-snippet-firefox-extension.html');
|
||||
rm(FIREFOX_BUILD_CONTENT_DIR + '/web/locale.properties');
|
||||
// Remove '.DS_Store' and other hidden files
|
||||
find(FIREFOX_BUILD_DIR).forEach(function(file) {
|
||||
if (file.match(/^\./))
|
||||
@ -287,8 +338,10 @@ target.firefox = function() {
|
||||
// Update the build version number
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, FIREFOX_BUILD_DIR + '/install.rdf');
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, FIREFOX_BUILD_DIR + '/update.rdf');
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, FIREFOX_BUILD_DIR + '/install.rdf.in');
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, FIREFOX_BUILD_DIR + '/README.mozilla');
|
||||
|
||||
// Update localized metadata
|
||||
var localizedMetadata = cat(EXTENSION_SRC_DIR + '/firefox/metadata.inc');
|
||||
sed('-i', /.*PDFJS_LOCALIZED_METADATA.*\n/, localizedMetadata, FIREFOX_BUILD_DIR + '/install.rdf');
|
||||
|
||||
// Create the xpi
|
||||
cd(FIREFOX_BUILD_DIR);
|
||||
@ -302,9 +355,89 @@ target.firefox = function() {
|
||||
exec('zip -r ' + FIREFOX_AMO_EXTENSION_NAME + ' ' + FIREFOX_EXTENSION_FILES.join(' '));
|
||||
echo('AMO extension created: ' + FIREFOX_AMO_EXTENSION_NAME);
|
||||
cd(ROOT_DIR);
|
||||
};
|
||||
|
||||
//
|
||||
// make mozcentral
|
||||
//
|
||||
target.mozcentral = function() {
|
||||
cd(ROOT_DIR);
|
||||
echo();
|
||||
echo('### Building mozilla-central extension');
|
||||
|
||||
var MOZCENTRAL_DIR = BUILD_DIR + '/mozcentral',
|
||||
MOZCENTRAL_CONTENT_DIR = MOZCENTRAL_DIR + '/content/',
|
||||
MOZCENTRAL_L10N_DIR = MOZCENTRAL_DIR + '/l10n/',
|
||||
FIREFOX_CONTENT_DIR = EXTENSION_SRC_DIR + '/firefox/content/',
|
||||
FIREFOX_EXTENSION_FILES_TO_COPY =
|
||||
['*.js',
|
||||
'*.svg',
|
||||
'*.png',
|
||||
'install.rdf.in',
|
||||
'README.mozilla',
|
||||
'components',
|
||||
'../../LICENSE'],
|
||||
DEFAULT_LOCALE_FILES =
|
||||
['l10n/en-US/viewer.properties',
|
||||
'l10n/en-US/metadata.inc'],
|
||||
FIREFOX_MC_EXTENSION_FILES =
|
||||
['bootstrap.js',
|
||||
'icon.png',
|
||||
'icon64.png',
|
||||
'components',
|
||||
'content',
|
||||
'LICENSE'];
|
||||
|
||||
target.production();
|
||||
target.buildnumber();
|
||||
cd(ROOT_DIR);
|
||||
|
||||
// Clear out everything in the firefox extension build directory
|
||||
rm('-rf', MOZCENTRAL_DIR);
|
||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR);
|
||||
mkdir('-p', MOZCENTRAL_L10N_DIR);
|
||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR + BUILD_DIR);
|
||||
mkdir('-p', MOZCENTRAL_CONTENT_DIR + '/web');
|
||||
|
||||
// Copy extension files
|
||||
cd('extensions/firefox');
|
||||
cp('-R', FIREFOX_EXTENSION_FILES_TO_COPY, ROOT_DIR + MOZCENTRAL_DIR);
|
||||
cd(ROOT_DIR);
|
||||
|
||||
// Copy a standalone version of pdf.js inside the content directory
|
||||
cp(BUILD_TARGET, MOZCENTRAL_CONTENT_DIR + BUILD_DIR);
|
||||
cp('-R', EXTENSION_WEB_FILES, MOZCENTRAL_CONTENT_DIR + '/web');
|
||||
rm(MOZCENTRAL_CONTENT_DIR + '/web/viewer-production.html');
|
||||
|
||||
// Copy over the firefox extension snippet so we can inline pdf.js in it
|
||||
cp('web/viewer-snippet-firefox-extension.html', MOZCENTRAL_CONTENT_DIR + '/web');
|
||||
|
||||
// Modify the viewer so it does all the extension-only stuff.
|
||||
cd(MOZCENTRAL_CONTENT_DIR + '/web');
|
||||
sed('-i', /.*PDFJSSCRIPT_INCLUDE_BUNDLE.*\n/, cat(ROOT_DIR + BUILD_TARGET), 'viewer-snippet-firefox-extension.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_REMOVE_CORE.*\n/g, '', 'viewer.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION.*\n/g, '', 'viewer.html');
|
||||
sed('-i', /.*PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION.*\n/, cat('viewer-snippet-firefox-extension.html'), 'viewer.html');
|
||||
cd(ROOT_DIR);
|
||||
|
||||
// We don't need pdf.js anymore since its inlined
|
||||
rm('-Rf', MOZCENTRAL_CONTENT_DIR + BUILD_DIR);
|
||||
rm(MOZCENTRAL_CONTENT_DIR + '/web/viewer-snippet-firefox-extension.html');
|
||||
// Remove '.DS_Store' and other hidden files
|
||||
find(MOZCENTRAL_DIR).forEach(function(file) {
|
||||
if (file.match(/^\./))
|
||||
rm('-f', file);
|
||||
});
|
||||
|
||||
// Copy default localization files
|
||||
cp(DEFAULT_LOCALE_FILES, MOZCENTRAL_L10N_DIR);
|
||||
|
||||
// Update the build version number
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, MOZCENTRAL_DIR + '/install.rdf.in');
|
||||
sed('-i', /PDFJSSCRIPT_VERSION/, EXTENSION_VERSION, MOZCENTRAL_DIR + '/README.mozilla');
|
||||
|
||||
// List all files for mozilla-central
|
||||
cd(FIREFOX_BUILD_DIR);
|
||||
cd(MOZCENTRAL_DIR);
|
||||
var extensionFiles = '';
|
||||
find(FIREFOX_MC_EXTENSION_FILES).forEach(function(file){
|
||||
if (test('-f', file))
|
||||
@ -344,6 +477,7 @@ target.chrome = function() {
|
||||
// Copy a standalone version of pdf.js inside the content directory
|
||||
cp(BUILD_TARGET, CHROME_BUILD_CONTENT_DIR + BUILD_DIR);
|
||||
cp('-R', EXTENSION_WEB_FILES, CHROME_BUILD_CONTENT_DIR + '/web');
|
||||
cp('web/locale.properties', CHROME_BUILD_CONTENT_DIR + '/web');
|
||||
mv('-f', CHROME_BUILD_CONTENT_DIR + '/web/viewer-production.html',
|
||||
CHROME_BUILD_CONTENT_DIR + '/web/viewer.html');
|
||||
};
|
||||
@ -358,8 +492,9 @@ target.chrome = function() {
|
||||
// make test
|
||||
//
|
||||
target.test = function() {
|
||||
target.browsertest();
|
||||
target.unittest();
|
||||
target.unittest({}, function() {
|
||||
target.browsertest();
|
||||
});
|
||||
};
|
||||
|
||||
//
|
||||
@ -367,8 +502,9 @@ target.test = function() {
|
||||
// (Special tests for the Github bot)
|
||||
//
|
||||
target.bottest = function() {
|
||||
target.browsertest({noreftest: true});
|
||||
// target.unittest();
|
||||
target.unittest({}, function() {
|
||||
target.browsertest({noreftest: true});
|
||||
});
|
||||
};
|
||||
|
||||
//
|
||||
@ -398,18 +534,22 @@ target.browsertest = function(options) {
|
||||
//
|
||||
// make unittest
|
||||
//
|
||||
target.unittest = function() {
|
||||
target.unittest = function(options, callback) {
|
||||
cd(ROOT_DIR);
|
||||
echo();
|
||||
echo('### Running unit tests');
|
||||
|
||||
if (!which('make')) {
|
||||
echo('make not found. Skipping unit tests...');
|
||||
return;
|
||||
}
|
||||
var PDF_BROWSERS = env['PDF_BROWSERS'] || 'resources/browser_manifests/browser_manifest.json';
|
||||
|
||||
cd('test/unit');
|
||||
exec('make', {async: true});
|
||||
if (!test('-f', 'test/' + PDF_BROWSERS)) {
|
||||
echo('Browser manifest file test/' + PDF_BROWSERS + ' does not exist.');
|
||||
echo('Try copying one of the examples in test/resources/browser_manifests/');
|
||||
exit(1);
|
||||
}
|
||||
callback = callback || function() {};
|
||||
cd('test');
|
||||
exec(PYTHON_BIN + ' -u test.py --unitTest --browserManifestFile=' + PDF_BROWSERS,
|
||||
{async: true}, callback);
|
||||
};
|
||||
|
||||
//
|
||||
|
32
src/api.js
@ -45,7 +45,7 @@ PDFJS.getDocument = function getDocument(source) {
|
||||
* Proxy to a PDFDocument in the worker thread. Also, contains commonly used
|
||||
* properties that can be read synchronously.
|
||||
*/
|
||||
var PDFDocumentProxy = (function() {
|
||||
var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
|
||||
function PDFDocumentProxy(pdfInfo, transport) {
|
||||
this.pdfInfo = pdfInfo;
|
||||
this.transport = transport;
|
||||
@ -69,14 +69,14 @@ var PDFDocumentProxy = (function() {
|
||||
* @return {Promise} A promise that is resolved with a {PDFPageProxy}
|
||||
* object.
|
||||
*/
|
||||
getPage: function(number) {
|
||||
getPage: function PDFDocumentProxy_getPage(number) {
|
||||
return this.transport.getPage(number);
|
||||
},
|
||||
/**
|
||||
* @return {Promise} A promise that is resolved with a lookup table for
|
||||
* mapping named destinations to reference numbers.
|
||||
*/
|
||||
getDestinations: function() {
|
||||
getDestinations: function PDFDocumentProxy_getDestinations() {
|
||||
var promise = new PDFJS.Promise();
|
||||
var destinations = this.pdfInfo.destinations;
|
||||
promise.resolve(destinations);
|
||||
@ -97,7 +97,7 @@ var PDFDocumentProxy = (function() {
|
||||
* ...
|
||||
* ].
|
||||
*/
|
||||
getOutline: function() {
|
||||
getOutline: function PDFDocumentProxy_getOutline() {
|
||||
var promise = new PDFJS.Promise();
|
||||
var outline = this.pdfInfo.outline;
|
||||
promise.resolve(outline);
|
||||
@ -109,7 +109,7 @@ var PDFDocumentProxy = (function() {
|
||||
* available in the information dictionary and similarly metadata is a
|
||||
* {Metadata} object with information from the metadata section of the PDF.
|
||||
*/
|
||||
getMetadata: function() {
|
||||
getMetadata: function PDFDocumentProxy_getMetadata() {
|
||||
var promise = new PDFJS.Promise();
|
||||
var info = this.pdfInfo.info;
|
||||
var metadata = this.pdfInfo.metadata;
|
||||
@ -119,7 +119,7 @@ var PDFDocumentProxy = (function() {
|
||||
});
|
||||
return promise;
|
||||
},
|
||||
destroy: function() {
|
||||
destroy: function PDFDocumentProxy_destroy() {
|
||||
this.transport.destroy();
|
||||
}
|
||||
};
|
||||
@ -169,7 +169,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
* @return {PageViewport} Contains 'width' and 'height' properties along
|
||||
* with transforms required for rendering.
|
||||
*/
|
||||
getViewport: function(scale, rotate) {
|
||||
getViewport: function PDFPageProxy_getViewport(scale, rotate) {
|
||||
if (arguments.length < 2)
|
||||
rotate = this.rotate;
|
||||
return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0);
|
||||
@ -178,7 +178,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
* @return {Promise} A promise that is resolved with an {array} of the
|
||||
* annotation objects.
|
||||
*/
|
||||
getAnnotations: function() {
|
||||
getAnnotations: function PDFPageProxy_getAnnotations() {
|
||||
if (this.annotationsPromise)
|
||||
return this.annotationsPromise;
|
||||
|
||||
@ -198,7 +198,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
* @return {Promise} A promise that is resolved when the page finishes
|
||||
* rendering.
|
||||
*/
|
||||
render: function(params) {
|
||||
render: function PDFPageProxy_render(params) {
|
||||
this.renderInProgress = true;
|
||||
|
||||
var promise = new Promise();
|
||||
@ -257,8 +257,8 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
* For internal use only.
|
||||
*/
|
||||
startRenderingFromOperatorList:
|
||||
function PDFPageWrapper_startRenderingFromOperatorList(operatorList,
|
||||
fonts) {
|
||||
function PDFPageProxy_startRenderingFromOperatorList(operatorList,
|
||||
fonts) {
|
||||
var self = this;
|
||||
this.operatorList = operatorList;
|
||||
|
||||
@ -279,7 +279,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
/**
|
||||
* For internal use only.
|
||||
*/
|
||||
ensureFonts: function PDFPageWrapper_ensureFonts(fonts, callback) {
|
||||
ensureFonts: function PDFPageProxy_ensureFonts(fonts, callback) {
|
||||
this.stats.time('Font Loading');
|
||||
// Convert the font names to the corresponding font obj.
|
||||
for (var i = 0, ii = fonts.length; i < ii; i++) {
|
||||
@ -299,7 +299,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
/**
|
||||
* For internal use only.
|
||||
*/
|
||||
display: function PDFPageWrapper_display(gfx, viewport, callback) {
|
||||
display: function PDFPageProxy_display(gfx, viewport, callback) {
|
||||
var stats = this.stats;
|
||||
stats.time('Rendering');
|
||||
|
||||
@ -332,7 +332,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
* @return {Promise} That is resolved with the a {string} that is the text
|
||||
* content from the page.
|
||||
*/
|
||||
getTextContent: function() {
|
||||
getTextContent: function PDFPageProxy_getTextContent() {
|
||||
var promise = new PDFJS.Promise();
|
||||
this.transport.messageHandler.send('GetTextContent', {
|
||||
pageIndex: this.pageNumber - 1
|
||||
@ -346,7 +346,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
/**
|
||||
* Stub for future feature.
|
||||
*/
|
||||
getOperationList: function() {
|
||||
getOperationList: function PDFPageProxy_getOperationList() {
|
||||
var promise = new PDFJS.Promise();
|
||||
var operationList = { // not implemented
|
||||
dependencyFontsID: null,
|
||||
@ -358,7 +358,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
/**
|
||||
* Destroys resources allocated by the page.
|
||||
*/
|
||||
destroy: function() {
|
||||
destroy: function PDFPageProxy_destroy() {
|
||||
this.destroyed = true;
|
||||
|
||||
if (!this.renderInProgress) {
|
||||
|
@ -230,6 +230,7 @@ var Page = (function PageClosure() {
|
||||
case 'http':
|
||||
case 'https':
|
||||
case 'ftp':
|
||||
case 'mailto':
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
@ -557,7 +557,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
var toUnicode = dict.get('ToUnicode') ||
|
||||
baseDict.get('ToUnicode');
|
||||
if (toUnicode)
|
||||
properties.toUnicode = this.readToUnicode(toUnicode, xref);
|
||||
properties.toUnicode = this.readToUnicode(toUnicode, xref, properties);
|
||||
|
||||
if (properties.composite) {
|
||||
// CIDSystemInfo helps to match CID to glyphs
|
||||
@ -613,7 +613,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
properties.hasEncoding = hasEncoding;
|
||||
},
|
||||
|
||||
readToUnicode: function PartialEvaluator_readToUnicode(toUnicode, xref) {
|
||||
readToUnicode: function PartialEvaluator_readToUnicode(toUnicode, xref,
|
||||
properties) {
|
||||
var cmapObj = toUnicode;
|
||||
var charToUnicode = [];
|
||||
if (isName(cmapObj)) {
|
||||
@ -702,6 +703,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
}
|
||||
} else if (octet == 0x3E) {
|
||||
if (token.length) {
|
||||
// XXX guessing chars size by checking number size in the CMap
|
||||
if (token.length <= 2 && properties.composite)
|
||||
properties.wideChars = false;
|
||||
|
||||
if (token.length <= 4) {
|
||||
// parsing hex number
|
||||
tokens.push(parseInt(token, 16));
|
||||
@ -919,6 +924,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
length1: length1,
|
||||
length2: length2,
|
||||
composite: composite,
|
||||
wideChars: composite,
|
||||
fixedPitch: false,
|
||||
fontMatrix: dict.get('FontMatrix') || IDENTITY_MATRIX,
|
||||
firstChar: firstChar || 0,
|
||||
|
@ -1519,6 +1519,7 @@ var Font = (function FontClosure() {
|
||||
this.widths = properties.widths;
|
||||
this.defaultWidth = properties.defaultWidth;
|
||||
this.composite = properties.composite;
|
||||
this.wideChars = properties.wideChars;
|
||||
this.hasEncoding = properties.hasEncoding;
|
||||
|
||||
this.fontMatrix = properties.fontMatrix;
|
||||
@ -3251,7 +3252,7 @@ var Font = (function FontClosure() {
|
||||
|
||||
glyphs = [];
|
||||
|
||||
if (this.composite) {
|
||||
if (this.wideChars) {
|
||||
// composite fonts have multi-byte strings convert the string from
|
||||
// single-byte to multi-byte
|
||||
// XXX assuming CIDFonts are two-byte - later need to extract the
|
||||
|
@ -4,8 +4,28 @@
|
||||
'use strict';
|
||||
|
||||
var Metadata = PDFJS.Metadata = (function MetadataClosure() {
|
||||
function fixMetadata(meta) {
|
||||
return meta.replace(/>\\376\\377([^<]+)/g, function(all, codes) {
|
||||
var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g,
|
||||
function(code, d1, d2, d3) {
|
||||
return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
|
||||
});
|
||||
var chars = '';
|
||||
for (var i = 0; i < bytes.length; i += 2) {
|
||||
var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
|
||||
chars += code >= 32 && code < 127 && code != 60 && code != 62 &&
|
||||
code != 38 && false ? String.fromCharCode(code) :
|
||||
'&#x' + (0x10000 + code).toString(16).substring(1) + ';';
|
||||
}
|
||||
return '>' + chars;
|
||||
});
|
||||
}
|
||||
|
||||
function Metadata(meta) {
|
||||
if (typeof meta === 'string') {
|
||||
// Ghostscript produces invalid metadata
|
||||
meta = fixMetadata(meta);
|
||||
|
||||
var parser = new DOMParser();
|
||||
meta = parser.parseFromString(meta, 'application/xml');
|
||||
} else if (!(meta instanceof Document)) {
|
||||
|
20
src/obj.js
@ -39,7 +39,7 @@ var Dict = (function DictClosure() {
|
||||
// Map should only be used internally, use functions below to access.
|
||||
var map = Object.create(null);
|
||||
|
||||
this.assignXref = function Dict_assingXref(newXref) {
|
||||
this.assignXref = function Dict_assignXref(newXref) {
|
||||
xref = newXref;
|
||||
};
|
||||
|
||||
@ -364,9 +364,8 @@ var XRef = (function XRefClosure() {
|
||||
}
|
||||
}
|
||||
|
||||
// Sanity check: as per spec, first object must have these properties
|
||||
if (this.entries[0] &&
|
||||
!(this.entries[0].gen === 65535 && this.entries[0].free))
|
||||
// Sanity check: as per spec, first object must be free
|
||||
if (this.entries[0] && !this.entries[0].free)
|
||||
error('Invalid XRef table: unexpected first object');
|
||||
|
||||
// Sanity check
|
||||
@ -525,7 +524,7 @@ var XRef = (function XRefClosure() {
|
||||
}
|
||||
// reading XRef streams
|
||||
for (var i = 0, ii = xrefStms.length; i < ii; ++i) {
|
||||
this.readXRef(xrefStms[i]);
|
||||
this.readXRef(xrefStms[i], true);
|
||||
}
|
||||
// finding main trailer
|
||||
var dict;
|
||||
@ -548,7 +547,7 @@ var XRef = (function XRefClosure() {
|
||||
// nothing helps
|
||||
error('Invalid PDF structure');
|
||||
},
|
||||
readXRef: function XRef_readXRef(startXRef) {
|
||||
readXRef: function XRef_readXRef(startXRef, recoveryMode) {
|
||||
var stream = this.stream;
|
||||
stream.pos = startXRef;
|
||||
|
||||
@ -581,16 +580,18 @@ var XRef = (function XRefClosure() {
|
||||
error('Invalid XRef stream');
|
||||
}
|
||||
dict = this.readXRefStream(obj);
|
||||
if (!dict)
|
||||
error('Failed to read XRef stream');
|
||||
}
|
||||
|
||||
// Recursively get previous dictionary, if any
|
||||
obj = dict.get('Prev');
|
||||
if (isInt(obj))
|
||||
this.readXRef(obj);
|
||||
this.readXRef(obj, recoveryMode);
|
||||
else if (isRef(obj)) {
|
||||
// The spec says Prev must not be a reference, i.e. "/Prev NNN"
|
||||
// This is a fallback for non-compliant PDFs, i.e. "/Prev NNN 0 R"
|
||||
this.readXRef(obj.num);
|
||||
this.readXRef(obj.num, recoveryMode);
|
||||
}
|
||||
|
||||
return dict;
|
||||
@ -598,6 +599,9 @@ var XRef = (function XRefClosure() {
|
||||
log('(while reading XRef): ' + e);
|
||||
}
|
||||
|
||||
if (recoveryMode)
|
||||
return;
|
||||
|
||||
warn('Indexing all PDF objects');
|
||||
return this.indexObjects();
|
||||
},
|
||||
|
@ -110,7 +110,7 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
|
||||
var r1 = raw[6];
|
||||
return {
|
||||
type: 'Pattern',
|
||||
getPattern: function(ctx) {
|
||||
getPattern: function RadialAxial_getPattern(ctx) {
|
||||
var curMatrix = ctx.mozCurrentTransform;
|
||||
if (curMatrix) {
|
||||
var userMatrix = ctx.mozCurrentTransformInverse;
|
||||
|
@ -97,7 +97,7 @@ var Util = PDFJS.Util = (function UtilClosure() {
|
||||
return [xt, yt];
|
||||
};
|
||||
|
||||
Util.applyInverseTransform = function Util_applyTransform(p, m) {
|
||||
Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
|
||||
var d = m[0] * m[3] - m[1] * m[2];
|
||||
var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
|
||||
var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
|
||||
|
@ -23,9 +23,9 @@ var files = [
|
||||
'pattern.js',
|
||||
'stream.js',
|
||||
'worker.js',
|
||||
'../external/jpgjs/jpg.js',
|
||||
'jpx.js',
|
||||
'bidi.js'
|
||||
'bidi.js',
|
||||
'../external/jpgjs/jpg.js'
|
||||
];
|
||||
|
||||
// Load all the files.
|
||||
|
1
test/pdfs/.gitignore
vendored
@ -18,6 +18,7 @@
|
||||
!cmykjpeg.pdf
|
||||
!issue840.pdf
|
||||
!scan-bad.pdf
|
||||
!pdfjsbad1586.pdf
|
||||
!freeculture.pdf
|
||||
!pdfkit_compressed.pdf
|
||||
!TAMReview.pdf
|
||||
|
1
test/pdfs/issue1597.pdf.link
Normal file
@ -0,0 +1 @@
|
||||
http://content1d.omroep.nl/227cbd4ae54f95dd466a7a8475fec2ea/4f95b377/nos/docs/230412_brief_koningin.pdf
|
BIN
test/pdfs/pdfjsbad1586.pdf
Normal file
217
test/test.py
@ -39,9 +39,13 @@ class TestOptions(OptionParser):
|
||||
default=False)
|
||||
self.add_option("--port", action="store", dest="port", type="int",
|
||||
help="The port the HTTP server should listen on.", default=8080)
|
||||
self.add_option("--unitTest", action="store_true", dest="unitTest",
|
||||
help="Run the unit tests.", default=False)
|
||||
self.set_usage(USAGE_EXAMPLE)
|
||||
|
||||
def verifyOptions(self, options):
|
||||
if options.reftest and options.unitTest:
|
||||
self.error("--reftest and --unitTest must not be specified at the same time.")
|
||||
if options.masterMode and options.manifestFile:
|
||||
self.error("--masterMode and --manifestFile must not be specified at the same time.")
|
||||
if not options.manifestFile:
|
||||
@ -50,6 +54,7 @@ class TestOptions(OptionParser):
|
||||
print "Warning: ignoring browser argument since manifest file was also supplied"
|
||||
if not options.browser and not options.browserManifestFile:
|
||||
print "Starting server on port %s." % options.port
|
||||
|
||||
return options
|
||||
|
||||
def prompt(question):
|
||||
@ -68,7 +73,8 @@ MIMEs = {
|
||||
'.gif': 'image/gif',
|
||||
'.ico': 'image/x-icon',
|
||||
'.png': 'image/png',
|
||||
'.log': 'text/plain'
|
||||
'.log': 'text/plain',
|
||||
'.properties': 'text/plain'
|
||||
}
|
||||
|
||||
class State:
|
||||
@ -86,6 +92,13 @@ class State:
|
||||
eqLog = None
|
||||
lastPost = { }
|
||||
|
||||
class UnitTestState:
|
||||
browsers = [ ]
|
||||
browsersRunning = 0
|
||||
lastPost = { }
|
||||
numErrors = 0
|
||||
numRun = 0
|
||||
|
||||
class Result:
|
||||
def __init__(self, snapshot, failure, page):
|
||||
self.snapshot = snapshot
|
||||
@ -95,8 +108,7 @@ class Result:
|
||||
class TestServer(SocketServer.TCPServer):
|
||||
allow_reuse_address = True
|
||||
|
||||
class PDFTestHandler(BaseHTTPRequestHandler):
|
||||
|
||||
class TestHandlerBase(BaseHTTPRequestHandler):
|
||||
# Disable annoying noise by default
|
||||
def log_request(code=0, size=0):
|
||||
if VERBOSE:
|
||||
@ -110,34 +122,6 @@ class PDFTestHandler(BaseHTTPRequestHandler):
|
||||
with open(path, "rb") as f:
|
||||
self.wfile.write(f.read())
|
||||
|
||||
def sendIndex(self, path, query):
|
||||
if not path.endswith("/"):
|
||||
# we need trailing slash
|
||||
self.send_response(301)
|
||||
redirectLocation = path + "/"
|
||||
if query:
|
||||
redirectLocation += "?" + query
|
||||
self.send_header("Location", redirectLocation)
|
||||
self.end_headers()
|
||||
return
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "text/html")
|
||||
self.end_headers()
|
||||
if query == "frame":
|
||||
self.wfile.write("<html><frameset cols=*,200><frame name=pdf>" +
|
||||
"<frame src='" + path + "'></frameset></html>")
|
||||
return
|
||||
|
||||
location = os.path.abspath(os.path.realpath(DOC_ROOT + os.sep + path))
|
||||
self.wfile.write("<html><body><h1>PDFs of " + path + "</h1>\n")
|
||||
for filename in os.listdir(location):
|
||||
if filename.lower().endswith('.pdf'):
|
||||
self.wfile.write("<a href='/web/viewer.html?file=" +
|
||||
urllib.quote_plus(path + filename, '/') + "' target=pdf>" +
|
||||
filename + "</a><br>\n")
|
||||
self.wfile.write("</body></html>")
|
||||
|
||||
def do_GET(self):
|
||||
url = urlparse(self.path)
|
||||
# Ignore query string
|
||||
@ -168,6 +152,70 @@ class PDFTestHandler(BaseHTTPRequestHandler):
|
||||
|
||||
self.sendFile(path, ext)
|
||||
|
||||
class UnitTestHandler(TestHandlerBase):
|
||||
def sendIndex(self, path, query):
|
||||
print "send index"
|
||||
def do_POST(self):
|
||||
numBytes = int(self.headers['Content-Length'])
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header('Content-Type', 'text/plain')
|
||||
self.end_headers()
|
||||
|
||||
url = urlparse(self.path)
|
||||
result = json.loads(self.rfile.read(numBytes))
|
||||
browser = result['browser']
|
||||
UnitTestState.lastPost[browser] = int(time.time())
|
||||
if url.path == "/tellMeToQuit":
|
||||
tellAppToQuit(url.path, url.query)
|
||||
UnitTestState.browsersRunning -= 1
|
||||
UnitTestState.lastPost[browser] = None
|
||||
return
|
||||
elif url.path == '/info':
|
||||
print result['message']
|
||||
elif url.path == '/submit_task_results':
|
||||
status, description = result['status'], result['description']
|
||||
UnitTestState.numRun += 1
|
||||
if status == 'TEST-UNEXPECTED-FAIL':
|
||||
UnitTestState.numErrors += 1
|
||||
message = status + ' | ' + description + ' | in ' + browser
|
||||
if 'error' in result:
|
||||
message += ' | ' + result['error']
|
||||
print message
|
||||
else:
|
||||
print 'Error: uknown action' + url.path
|
||||
|
||||
class PDFTestHandler(TestHandlerBase):
|
||||
|
||||
def sendIndex(self, path, query):
|
||||
if not path.endswith("/"):
|
||||
# we need trailing slash
|
||||
self.send_response(301)
|
||||
redirectLocation = path + "/"
|
||||
if query:
|
||||
redirectLocation += "?" + query
|
||||
self.send_header("Location", redirectLocation)
|
||||
self.end_headers()
|
||||
return
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "text/html")
|
||||
self.end_headers()
|
||||
if query == "frame":
|
||||
self.wfile.write("<html><frameset cols=*,200><frame name=pdf>" +
|
||||
"<frame src='" + path + "'></frameset></html>")
|
||||
return
|
||||
|
||||
location = os.path.abspath(os.path.realpath(DOC_ROOT + os.sep + path))
|
||||
self.wfile.write("<html><body><h1>PDFs of " + path + "</h1>\n")
|
||||
for filename in os.listdir(location):
|
||||
if filename.lower().endswith('.pdf'):
|
||||
self.wfile.write("<a href='/web/viewer.html?file=" +
|
||||
urllib.quote_plus(path + filename, '/') + "' target=pdf>" +
|
||||
filename + "</a><br>\n")
|
||||
self.wfile.write("</body></html>")
|
||||
|
||||
|
||||
def do_POST(self):
|
||||
numBytes = int(self.headers['Content-Length'])
|
||||
|
||||
@ -245,6 +293,8 @@ class BaseBrowserCommand(object):
|
||||
self.browserLog = open(BROWSERLOG_FILE, "w")
|
||||
|
||||
def teardown(self):
|
||||
self.process.terminate()
|
||||
|
||||
# If the browser is still running, wait up to ten seconds for it to quit
|
||||
if self.process and self.process.poll() is None:
|
||||
checks = 0
|
||||
@ -255,6 +305,7 @@ class BaseBrowserCommand(object):
|
||||
if self.process.poll() is None:
|
||||
print "Process %s is still running. Killing." % self.name
|
||||
self.process.kill()
|
||||
self.process.wait()
|
||||
|
||||
if self.tempDir is not None and os.path.exists(self.tempDir):
|
||||
shutil.rmtree(self.tempDir)
|
||||
@ -354,6 +405,17 @@ def verifyPDFs(manifestList):
|
||||
error = True
|
||||
return not error
|
||||
|
||||
def getTestBrowsers(options):
|
||||
testBrowsers = []
|
||||
if options.browserManifestFile:
|
||||
testBrowsers = makeBrowserCommands(options.browserManifestFile)
|
||||
elif options.browser:
|
||||
testBrowsers = [makeBrowserCommand({"path":options.browser, "name":None})]
|
||||
|
||||
if options.browserManifestFile or options.browser:
|
||||
assert len(testBrowsers) > 0
|
||||
return testBrowsers
|
||||
|
||||
def setUp(options):
|
||||
# Only serve files from a pdf.js clone
|
||||
assert not GIT_CLONE_CHECK or os.path.isfile('../src/pdf.js') and os.path.isdir('../.git')
|
||||
@ -366,14 +428,7 @@ def setUp(options):
|
||||
|
||||
assert not os.path.isdir(TMPDIR)
|
||||
|
||||
testBrowsers = []
|
||||
if options.browserManifestFile:
|
||||
testBrowsers = makeBrowserCommands(options.browserManifestFile)
|
||||
elif options.browser:
|
||||
testBrowsers = [makeBrowserCommand({"path":options.browser, "name":None})]
|
||||
|
||||
if options.browserManifestFile or options.browser:
|
||||
assert len(testBrowsers) > 0
|
||||
testBrowsers = getTestBrowsers(options)
|
||||
|
||||
with open(options.manifestFile) as mf:
|
||||
manifestList = json.load(mf)
|
||||
@ -398,13 +453,23 @@ def setUp(options):
|
||||
|
||||
return testBrowsers
|
||||
|
||||
def startBrowsers(browsers, options):
|
||||
def setUpUnitTests(options):
|
||||
# Only serve files from a pdf.js clone
|
||||
assert not GIT_CLONE_CHECK or os.path.isfile('../src/pdf.js') and os.path.isdir('../.git')
|
||||
|
||||
testBrowsers = getTestBrowsers(options)
|
||||
|
||||
UnitTestState.browsersRunning = len(testBrowsers)
|
||||
for b in testBrowsers:
|
||||
UnitTestState.lastPost[b.name] = int(time.time())
|
||||
return testBrowsers
|
||||
|
||||
def startBrowsers(browsers, options, path):
|
||||
for b in browsers:
|
||||
b.setup()
|
||||
print 'Launching', b.name
|
||||
host = 'http://%s:%s' % (SERVER_HOST, options.port)
|
||||
path = '/test/test_slave.html?'
|
||||
qs = 'browser='+ urllib.quote(b.name) +'&manifestFile='+ urllib.quote(options.manifestFile)
|
||||
qs = '?browser='+ urllib.quote(b.name) +'&manifestFile='+ urllib.quote(options.manifestFile)
|
||||
qs += '&path=' + b.path
|
||||
b.start(host + path + qs)
|
||||
|
||||
@ -526,7 +591,7 @@ def processResults():
|
||||
print ''
|
||||
numFatalFailures = (State.numErrors + State.numFBFFailures)
|
||||
if 0 == State.numEqFailures and 0 == numFatalFailures:
|
||||
print 'All tests passed.'
|
||||
print 'All regression tests passed.'
|
||||
else:
|
||||
print 'OHNOES! Some tests failed!'
|
||||
if 0 < State.numErrors:
|
||||
@ -576,7 +641,7 @@ def startReftest(browser, options):
|
||||
def runTests(options, browsers):
|
||||
t1 = time.time()
|
||||
try:
|
||||
startBrowsers(browsers, options)
|
||||
startBrowsers(browsers, options, '/test/test_slave.html')
|
||||
while not State.done:
|
||||
for b in State.lastPost:
|
||||
if State.remaining[b] > 0 and int(time.time()) - State.lastPost[b] > BROWSER_TIMEOUT:
|
||||
@ -598,6 +663,30 @@ def runTests(options, browsers):
|
||||
print "\nStarting reftest harness to examine %d eq test failures." % State.numEqFailures
|
||||
startReftest(browsers[0], options)
|
||||
|
||||
def runUnitTests(options, browsers):
|
||||
t1 = time.time()
|
||||
try:
|
||||
startBrowsers(browsers, options, '/test/unit/unit_test.html')
|
||||
while UnitTestState.browsersRunning > 0:
|
||||
for b in UnitTestState.lastPost:
|
||||
if UnitTestState.lastPost[b] != None and int(time.time()) - UnitTestState.lastPost[b] > BROWSER_TIMEOUT:
|
||||
print 'TEST-UNEXPECTED-FAIL | test failed', b, "has not responded in", BROWSER_TIMEOUT, "s"
|
||||
UnitTestState.lastPost[b] = None
|
||||
UnitTestState.browsersRunning -= 1
|
||||
UnitTestState.numErrors += 1
|
||||
time.sleep(1)
|
||||
print ''
|
||||
print 'Ran', UnitTestState.numRun, 'tests'
|
||||
if UnitTestState.numErrors > 0:
|
||||
print 'OHNOES! Some tests failed!'
|
||||
print ' ', UnitTestState.numErrors, 'of', UnitTestState.numRun, 'failed'
|
||||
else:
|
||||
print 'All unit tests passed.'
|
||||
finally:
|
||||
teardownBrowsers(browsers)
|
||||
t2 = time.time()
|
||||
print "Unit test Runtime was", int(t2 - t1), "seconds"
|
||||
|
||||
def main():
|
||||
optionParser = TestOptions()
|
||||
options, args = optionParser.parse_args()
|
||||
@ -605,23 +694,33 @@ def main():
|
||||
if options == None:
|
||||
sys.exit(1)
|
||||
|
||||
httpd = TestServer((SERVER_HOST, options.port), PDFTestHandler)
|
||||
httpd.masterMode = options.masterMode
|
||||
httpd_thread = threading.Thread(target=httpd.serve_forever)
|
||||
httpd_thread.setDaemon(True)
|
||||
httpd_thread.start()
|
||||
if options.unitTest:
|
||||
httpd = TestServer((SERVER_HOST, options.port), UnitTestHandler)
|
||||
httpd_thread = threading.Thread(target=httpd.serve_forever)
|
||||
httpd_thread.setDaemon(True)
|
||||
httpd_thread.start()
|
||||
|
||||
browsers = setUp(options)
|
||||
if len(browsers) > 0:
|
||||
runTests(options, browsers)
|
||||
browsers = setUpUnitTests(options)
|
||||
if len(browsers) > 0:
|
||||
runUnitTests(options, browsers)
|
||||
else:
|
||||
# just run the server
|
||||
print "Running HTTP server. Press Ctrl-C to quit."
|
||||
try:
|
||||
while True:
|
||||
time.sleep(1)
|
||||
except (KeyboardInterrupt):
|
||||
print "\nExiting."
|
||||
httpd = TestServer((SERVER_HOST, options.port), PDFTestHandler)
|
||||
httpd.masterMode = options.masterMode
|
||||
httpd_thread = threading.Thread(target=httpd.serve_forever)
|
||||
httpd_thread.setDaemon(True)
|
||||
httpd_thread.start()
|
||||
|
||||
browsers = setUp(options)
|
||||
if len(browsers) > 0:
|
||||
runTests(options, browsers)
|
||||
else:
|
||||
# just run the server
|
||||
print "Running HTTP server. Press Ctrl-C to quit."
|
||||
try:
|
||||
while True:
|
||||
time.sleep(1)
|
||||
except (KeyboardInterrupt):
|
||||
print "\nExiting."
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
@ -363,6 +363,12 @@
|
||||
"link": true,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "issue1586",
|
||||
"file": "pdfs/pdfjsbad1586.pdf",
|
||||
"md5": "793d0870f0b0c613799b0677d64daca4",
|
||||
"rounds": 1,
|
||||
"type": "load"
|
||||
},
|
||||
{ "id": "aboutstacks",
|
||||
"file": "pdfs/aboutstacks.pdf",
|
||||
"md5": "6e7c8416a293ba2d83bc8dd20c6ccf51",
|
||||
@ -560,6 +566,13 @@
|
||||
"link": true,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "issue1597",
|
||||
"file": "pdfs/issue1597.pdf",
|
||||
"md5": "a5ebef467fd6e2fc0aeb56c9eb725ae3",
|
||||
"rounds": 1,
|
||||
"link": true,
|
||||
"type": "eq"
|
||||
},
|
||||
{ "id": "issue1317",
|
||||
"file": "pdfs/issue1317.pdf",
|
||||
"md5": "6fb46275b30c48c8985617d4f86199e3",
|
||||
|
@ -1,116 +0,0 @@
|
||||
# Create temporary profile directory name.
|
||||
TEMP_PROFILE:=$(shell echo `pwd`)/test_reports/temp_profile
|
||||
|
||||
# These are the Firefox command line arguments.
|
||||
FIREFOX_ARGS:=-no-remote -profile $(TEMP_PROFILE)
|
||||
|
||||
# These are the Chrome command line arguments.
|
||||
CHROME_ARGS:=--user-data-dir=$(TEMP_PROFILE) --no-first-run --disable-sync
|
||||
|
||||
# Unit test uses the manifest from ref test to determine which browsers will
|
||||
# be used for running the unit tests.
|
||||
MANIFEST:=../resources/browser_manifests/browser_manifest.json
|
||||
|
||||
# This is a helper command to separate multiple browsers to their own lines
|
||||
# for an easier sed operation.
|
||||
SPLIT_LINES:=sed 's|,|,@|g' | tr '@' '\n'
|
||||
|
||||
# This is a helper command to join multiple lines together.
|
||||
JOIN_LINES:=tr -d '\n'
|
||||
|
||||
# Fetch the paths to browsers that are going to be used in testing.
|
||||
# For OS X the path to the binary needs to be added.
|
||||
# Add the browser arguments for each browser.
|
||||
# Create random profile directory for each browser.
|
||||
BROWSERS_PATHS:=$(shell echo `\
|
||||
sed -n 's|.*"path":\(.*\)|\1,|p' $(MANIFEST) | \
|
||||
$(JOIN_LINES) \
|
||||
`)
|
||||
|
||||
# The browser_manifest.json file has only the app directory for mac browsers.
|
||||
# The absolute path to the browser binary needs to be used.
|
||||
BROWSERS_PATHS_WITH_MAC_CORRECTION:=$(shell echo '$(BROWSERS_PATHS)' | \
|
||||
$(SPLIT_LINES) | \
|
||||
sed 's|\(Aurora\.app\)|\1/Contents/MacOS/firefox-bin|' | \
|
||||
sed 's|\(Firefox.*\.app\)|\1/Contents/MacOS/firefox-bin|' | \
|
||||
sed 's|\(Google Chrome\.app\)|\1/Contents/MacOS/Google Chrome|' | \
|
||||
$(JOIN_LINES) \
|
||||
)
|
||||
|
||||
# Replace " with @@@@ so that echoing do not destroy the quotation marks.
|
||||
QUOTATION_MARK:=\"
|
||||
SUBSTITUTE_FOR_QUOTATION_MARK:=@@@@
|
||||
|
||||
# Each of the browser can have their own separate arguments.
|
||||
BROWSERS_WITH_ARGUMENTS:=$(shell echo '$(BROWSERS_PATHS_WITH_MAC_CORRECTION)' | \
|
||||
$(SPLIT_LINES) | \
|
||||
sed "s|\(irefox.*\)\($(QUOTATION_MARK)\),|\1;$(FIREFOX_ARGS)\2,|" | \
|
||||
sed "s|\(hrome.*\)\($(QUOTATION_MARK)\),|\1;$(CHROME_ARGS)\2,|" | \
|
||||
$(JOIN_LINES) \
|
||||
)
|
||||
|
||||
# A temporary profile directory is needed for each of the browser. In this way
|
||||
# a unit test run will not disturb the main browsing session of the user. The
|
||||
# $RANDOM shell variable is used to generate non-conflicting temporary
|
||||
# directories.
|
||||
BROWSERS_WITH_UKNOWN_RANDOM_PROFILE_PATHS:=$(shell echo '$(BROWSERS_WITH_ARGUMENTS)' | \
|
||||
$(SPLIT_LINES) | \
|
||||
sed 's|\(temp_profile\)|\1_$$RANDOM$$RANDOM|' | \
|
||||
sed "s|$(QUOTATION_MARK)|$(SUBSTITUTE_FOR_QUOTATION_MARK)|g" | \
|
||||
$(JOIN_LINES) \
|
||||
)
|
||||
|
||||
# Echo the variable so that the unknown random directories become known.
|
||||
# Replace @@@@ with " so that jsTestDriver will work properly.
|
||||
BROWSERS:=$(shell echo "$(BROWSERS_WITH_UKNOWN_RANDOM_PROFILE_PATHS)" | \
|
||||
sed "s|$(SUBSTITUTE_FOR_QUOTATION_MARK)|$(QUOTATION_MARK)|g" \
|
||||
)
|
||||
|
||||
# Get the known random directories for browsers. This information will be used
|
||||
# to create the profile directories beforehand. Create also the dummy temp
|
||||
# profile directory so that the mkdir command would not fail for browsers that
|
||||
# do not need it.
|
||||
PROFILES:=$(TEMP_PROFILE) $(shell echo '$(BROWSERS)' | \
|
||||
$(SPLIT_LINES) | \
|
||||
sed -n "s|.*\( $(TEMP_PROFILE)_[0-9]\+\).*|\1|p" | \
|
||||
$(JOIN_LINES) \
|
||||
)
|
||||
|
||||
# This is the command to invoke the unit test.
|
||||
PROG:=java \
|
||||
-Xms512m \
|
||||
-Xmx1024m \
|
||||
-jar ../../external/jsTestDriver/JsTestDriver-1.3.3d.jar \
|
||||
--config ./jsTestDriver.conf \
|
||||
--reset \
|
||||
--port 4224 \
|
||||
--browser $(BROWSERS) \
|
||||
--tests all \
|
||||
--testOutput ./test_reports/
|
||||
|
||||
# This default rule runs the unit tests with the constructed command.
|
||||
test:
|
||||
@mkdir -p $(PROFILES)
|
||||
$(PROG)
|
||||
@rm -rf $(PROFILES)
|
||||
|
||||
# In case this Makefile needs to be debugged then this rule will provide all
|
||||
# the information from intermediate steps.
|
||||
debug:
|
||||
@echo 'Debug browsers paths: $(BROWSERS_PATHS)'
|
||||
@echo
|
||||
@echo 'Debug browsers paths with mac correction: $(BROWSERS_PATHS_WITH_MAC_CORRECTION)'
|
||||
@echo
|
||||
@echo 'Debug browsers with arguments: $(BROWSERS_WITH_ARGUMENTS)'
|
||||
@echo
|
||||
@echo 'Debug browsers random profile paths: $(BROWSERS_WITH_UKNOWN_RANDOM_PROFILE_PATHS)'
|
||||
@echo
|
||||
@echo 'Debug browsers: $(BROWSERS)'
|
||||
@echo
|
||||
@echo 'Debug profiles: $(PROFILES)'
|
||||
@echo
|
||||
@echo 'Command to be run: $(PROG)'
|
||||
@echo
|
||||
|
||||
.phony:: test
|
||||
|
@ -6,11 +6,11 @@
|
||||
describe('api', function() {
|
||||
// TODO run with worker enabled
|
||||
PDFJS.disableWorker = true;
|
||||
var basicApiUrl = '/basicapi.pdf';
|
||||
var basicApiUrl = '../pdfs/basicapi.pdf';
|
||||
function waitsForPromise(promise) {
|
||||
waitsFor(function() {
|
||||
return promise.isResolved || promise.isRejected;
|
||||
}, 250);
|
||||
}, 1000);
|
||||
}
|
||||
function expectAfterPromise(promise, successCallback) {
|
||||
waitsForPromise(promise);
|
||||
@ -25,8 +25,6 @@ describe('api', function() {
|
||||
describe('PDFJS', function() {
|
||||
describe('getDocument', function() {
|
||||
it('creates pdf doc from URL', function() {
|
||||
console.log('what is');
|
||||
debugger;
|
||||
var promise = PDFJS.getDocument(basicApiUrl);
|
||||
expectAfterPromise(promise, function(data) {
|
||||
expect(true).toEqual(true);
|
||||
|
@ -1,39 +0,0 @@
|
||||
server: http://localhost:4224
|
||||
|
||||
basepath: ..
|
||||
|
||||
load:
|
||||
- ../external/jasmine/jasmine.js
|
||||
- ../external/jasmineAdapter/JasmineAdapter.js
|
||||
- ../src/obj.js
|
||||
- ../src/core.js
|
||||
- ../src/util.js
|
||||
- ../src/api.js
|
||||
- ../src/canvas.js
|
||||
- ../src/obj.js
|
||||
- ../src/function.js
|
||||
- ../src/charsets.js
|
||||
- ../src/cidmaps.js
|
||||
- ../src/colorspace.js
|
||||
- ../src/crypto.js
|
||||
- ../src/evaluator.js
|
||||
- ../src/fonts.js
|
||||
- ../src/glyphlist.js
|
||||
- ../src/image.js
|
||||
- ../src/metrics.js
|
||||
- ../src/parser.js
|
||||
- ../src/pattern.js
|
||||
- ../src/stream.js
|
||||
- ../src/worker.js
|
||||
- ../src/bidi.js
|
||||
- ../src/metadata.js
|
||||
- ../external/jpgjs/jpg.js
|
||||
- unit/obj_spec.js
|
||||
- unit/font_spec.js
|
||||
- unit/function_spec.js
|
||||
- unit/crypto_spec.js
|
||||
- unit/stream_spec.js
|
||||
- unit/api_spec.js
|
||||
|
||||
gateway:
|
||||
- {matcher: "*.pdf", server: "http://localhost:8888/test/pdfs/"}
|
18
test/unit/metadata_spec.js
Normal file
@ -0,0 +1,18 @@
|
||||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
|
||||
|
||||
'use strict';
|
||||
|
||||
describe('metadata', function() {
|
||||
describe('incorrect_xmp', function() {
|
||||
it('should fix the incorrect XMP data', function() {
|
||||
var invalidXMP = '<x:xmpmeta xmlns:x=\'adobe:ns:meta/\'>' +
|
||||
'<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>' +
|
||||
'<rdf:Description xmlns:dc=\'http://purl.org/dc/elements/1.1/\'>' +
|
||||
'<dc:title>\\376\\377\\000P\\000D\\000F\\000&</dc:title>' +
|
||||
'</rdf:Description></rdf:RDF></x:xmpmeta>';
|
||||
var meta = new Metadata(invalidXMP);
|
||||
expect(meta.get('dc:title')).toEqual('PDF&');
|
||||
});
|
||||
});
|
||||
});
|
@ -4,7 +4,21 @@
|
||||
'use strict';
|
||||
|
||||
describe('stream', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
this.addMatchers({
|
||||
toMatchTypedArray: function(expected) {
|
||||
var actual = this.actual;
|
||||
if (actual.length != expected.length)
|
||||
return false;
|
||||
for (var i = 0, ii = expected.length; i < ii; i++) {
|
||||
var a = actual[i], b = expected[i];
|
||||
if (a !== b)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
});
|
||||
describe('PredictorStream', function() {
|
||||
it('should decode simple predictor data', function() {
|
||||
var dict = new Dict();
|
||||
@ -18,7 +32,9 @@ describe('stream', function() {
|
||||
var predictor = new PredictorStream(input, dict);
|
||||
var result = predictor.getBytes(6);
|
||||
|
||||
expect(result).toEqual(new Uint8Array([100, 3, 101, 2, 102, 1]));
|
||||
expect(result).toMatchTypedArray(
|
||||
new Uint8Array([100, 3, 101, 2, 102, 1])
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
3
test/unit/test_reports/.gitignore
vendored
@ -1,3 +0,0 @@
|
||||
TEST*
|
||||
temp*
|
||||
|
72
test/unit/testreporter.js
Normal file
@ -0,0 +1,72 @@
|
||||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
|
||||
|
||||
var TestReporter = function(browser, appPath) {
|
||||
function send(action, json) {
|
||||
var r = new XMLHttpRequest();
|
||||
// (The POST URI is ignored atm.)
|
||||
r.open('POST', action, true);
|
||||
r.setRequestHeader('Content-Type', 'application/json');
|
||||
r.onreadystatechange = function sendTaskResultOnreadystatechange(e) {
|
||||
if (r.readyState == 4) {
|
||||
// Retry until successful
|
||||
if (r.status !== 200)
|
||||
send(action, json);
|
||||
}
|
||||
};
|
||||
json['browser'] = browser;
|
||||
r.send(JSON.stringify(json));
|
||||
}
|
||||
|
||||
function sendInfo(message) {
|
||||
send('/info', {message: message});
|
||||
}
|
||||
|
||||
function sendResult(status, description, error) {
|
||||
var message = {
|
||||
status: status,
|
||||
description: description
|
||||
};
|
||||
if (typeof error !== 'undefined')
|
||||
message['error'] = error;
|
||||
send('/submit_task_results', message);
|
||||
}
|
||||
|
||||
function sendQuitRequest() {
|
||||
send('/tellMeToQuit?path=' + escape(appPath), {});
|
||||
}
|
||||
|
||||
this.now = function() {
|
||||
return new Date().getTime();
|
||||
};
|
||||
|
||||
this.reportRunnerStarting = function() {
|
||||
this.runnerStartTime = this.now();
|
||||
sendInfo('Started unit tests for ' + browser + '.');
|
||||
};
|
||||
|
||||
this.reportSpecStarting = function() { };
|
||||
|
||||
this.reportSpecResults = function(spec) {
|
||||
var results = spec.results();
|
||||
if (results.skipped) {
|
||||
sendResult('TEST-SKIPPED', results.description);
|
||||
} else if (results.passed()) {
|
||||
sendResult('TEST-PASSED', results.description);
|
||||
} else {
|
||||
var failedMessages = '';
|
||||
var items = results.getItems();
|
||||
for (var i = 0, ii = items.length; i < ii; i++)
|
||||
if (!items[i].passed())
|
||||
failedMessages += items[i].message + ' ';
|
||||
sendResult('TEST-UNEXPECTED-FAIL', results.description, failedMessages);
|
||||
}
|
||||
};
|
||||
|
||||
this.reportSuiteResults = function(suite) { };
|
||||
|
||||
this.reportRunnerResults = function(runner) {
|
||||
// Give the test.py some time process any queued up requests
|
||||
setTimeout(sendQuitRequest, 500);
|
||||
};
|
||||
};
|
95
test/unit/unit_test.html
Normal file
@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>pdf.js unit test</title>
|
||||
|
||||
<link rel="shortcut icon" type="image/png" href="../../external/jasmine/jasmine_favicon.png">
|
||||
<link rel="stylesheet" type="text/css" href="../../external/jasmine/jasmine.css">
|
||||
|
||||
<script type="text/javascript" src="../../external/jasmine/jasmine.js"></script>
|
||||
<script type="text/javascript" src="../../external/jasmine/jasmine-html.js"></script>
|
||||
<script type="text/javascript" src="testreporter.js"></script>
|
||||
|
||||
<!-- include source files here... -->
|
||||
<script type="text/javascript" src="../../src/core.js"></script>
|
||||
<script type="text/javascript" src="../../src/api.js"></script>
|
||||
<script type="text/javascript" src="../../src/util.js"></script>
|
||||
<script type="text/javascript" src="../../src/canvas.js"></script>
|
||||
<script type="text/javascript" src="../../src/obj.js"></script>
|
||||
<script type="text/javascript" src="../../src/function.js"></script>
|
||||
<script type="text/javascript" src="../../src/charsets.js"></script>
|
||||
<script type="text/javascript" src="../../src/cidmaps.js"></script>
|
||||
<script type="text/javascript" src="../../src/colorspace.js"></script>
|
||||
<script type="text/javascript" src="../../src/crypto.js"></script>
|
||||
<script type="text/javascript" src="../../src/evaluator.js"></script>
|
||||
<script type="text/javascript" src="../../src/fonts.js"></script>
|
||||
<script type="text/javascript" src="../../src/glyphlist.js"></script>
|
||||
<script type="text/javascript" src="../../src/image.js"></script>
|
||||
<script type="text/javascript" src="../../src/metrics.js"></script>
|
||||
<script type="text/javascript" src="../../src/parser.js"></script>
|
||||
<script type="text/javascript" src="../../src/pattern.js"></script>
|
||||
<script type="text/javascript" src="../../src/stream.js"></script>
|
||||
<script type="text/javascript" src="../../src/worker.js"></script>
|
||||
<script type="text/javascript" src="../../src/metadata.js"></script>
|
||||
<script type="text/javascript" src="../../external/jpgjs/jpg.js"></script>
|
||||
<script type="text/javascript">PDFJS.workerSrc = '../../src/worker_loader.js';</script>
|
||||
|
||||
<!-- include spec files here... -->
|
||||
<script type="text/javascript" src="obj_spec.js"></script>
|
||||
<script type="text/javascript" src="font_spec.js"></script>
|
||||
<script type="text/javascript" src="function_spec.js"></script>
|
||||
<script type="text/javascript" src="crypto_spec.js"></script>
|
||||
<script type="text/javascript" src="stream_spec.js"></script>
|
||||
<script type="text/javascript" src="api_spec.js"></script>
|
||||
<script type="text/javascript" src="metadata_spec.js"></script>
|
||||
<script type="text/javascript">
|
||||
'use strict';
|
||||
|
||||
(function pdfJsUnitTest() {
|
||||
function queryParams() {
|
||||
var qs = window.location.search.substring(1);
|
||||
var kvs = qs.split('&');
|
||||
var params = { };
|
||||
for (var i = 0; i < kvs.length; ++i) {
|
||||
var kv = kvs[i].split('=');
|
||||
params[unescape(kv[0])] = unescape(kv[1]);
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
var jasmineEnv = jasmine.getEnv();
|
||||
jasmineEnv.updateInterval = 1000;
|
||||
|
||||
var trivialReporter = new jasmine.TrivialReporter();
|
||||
|
||||
jasmineEnv.addReporter(trivialReporter);
|
||||
|
||||
var params = queryParams();
|
||||
if (params['browser']) {
|
||||
var testReporter = new TestReporter(params['browser'], params['path']);
|
||||
jasmineEnv.addReporter(testReporter);
|
||||
}
|
||||
|
||||
jasmineEnv.specFilter = function pdfJsUnitTestSpecFilter(spec) {
|
||||
return trivialReporter.specFilter(spec);
|
||||
};
|
||||
|
||||
var currentWindowOnload = window.onload;
|
||||
|
||||
window.onload = function pdfJsUnitTestOnload() {
|
||||
if (currentWindowOnload) {
|
||||
currentWindowOnload();
|
||||
}
|
||||
execJasmine();
|
||||
};
|
||||
|
||||
function execJasmine() {
|
||||
jasmineEnv.execute();
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
|
1
web/.gitignore
vendored
@ -1 +1,2 @@
|
||||
viewer-production.html
|
||||
locale.properties
|
||||
|
@ -423,8 +423,9 @@ var PDFBug = (function PDFBugClosure() {
|
||||
panels.setAttribute('class', 'panels');
|
||||
ui.appendChild(panels);
|
||||
|
||||
document.body.appendChild(ui);
|
||||
document.body.style.paddingRight = panelWidth + 'px';
|
||||
var container = document.getElementById('viewerContainer');
|
||||
container.appendChild(ui);
|
||||
container.style.right = panelWidth + 'px';
|
||||
|
||||
// Initialize all the debugging tools.
|
||||
var tools = this.tools;
|
||||
|
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 188 B |
Before Width: | Height: | Size: 289 B After Width: | Height: | Size: 289 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@ -1,662 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="240.00000"
|
||||
inkscape:export-xdpi="240.00000"
|
||||
inkscape:export-filename="/home/jimmac/gfx/novell/pdes/trunk/docs/BIGmime-text.png"
|
||||
sodipodi:docname="bookmark.svg"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:version="0.32"
|
||||
id="svg249"
|
||||
height="48.000000px"
|
||||
width="48.000000px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective100" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2906">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2908" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2910" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2896">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2898" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2900" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2598">
|
||||
<stop
|
||||
style="stop-color:#859dbc;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2600" />
|
||||
<stop
|
||||
style="stop-color:#547299;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2602" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2590">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2592" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2594" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient5897">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.0000000;"
|
||||
offset="0.0000000"
|
||||
id="stop5899" />
|
||||
<stop
|
||||
id="stop5905"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#000000;stop-opacity:0.56701028;" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop5901" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5866">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5868" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5870" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4404">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4406" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4408" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4542">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4544" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4546" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient15662">
|
||||
<stop
|
||||
id="stop15664"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop15666"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient269">
|
||||
<stop
|
||||
id="stop270"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop271"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#4c4c4c;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient259">
|
||||
<stop
|
||||
id="stop260"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#fafafa;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop261"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient12512">
|
||||
<stop
|
||||
id="stop12513"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop12517"
|
||||
offset="0.50000000"
|
||||
style="stop-color:#fff520;stop-opacity:0.89108908;" />
|
||||
<stop
|
||||
id="stop12514"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#fff300;stop-opacity:0.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="14.375000"
|
||||
fy="125.00000"
|
||||
fx="55.000000"
|
||||
cy="125.00000"
|
||||
cx="55.000000"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient278"
|
||||
xlink:href="#linearGradient12512"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient269"
|
||||
id="radialGradient15656"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.968273,0.000000,0.000000,1.036374,3.250000,0.489522)"
|
||||
cx="8.8244190"
|
||||
cy="3.7561285"
|
||||
fx="8.8244190"
|
||||
fy="3.7561285"
|
||||
r="37.751713" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient259"
|
||||
id="radialGradient15658"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.960493,0.000000,0.000000,1.044769,-0.103553,-0.159183)"
|
||||
cx="33.966679"
|
||||
cy="35.736916"
|
||||
fx="33.966679"
|
||||
fy="35.736916"
|
||||
r="86.708450" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient15662"
|
||||
id="radialGradient15668"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.973033,0.000000,0.000000,1.034937,3.168754,0.555277)"
|
||||
cx="8.1435566"
|
||||
cy="7.2678967"
|
||||
fx="8.1435566"
|
||||
fy="7.2678967"
|
||||
r="38.158695" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4542"
|
||||
id="radialGradient4548"
|
||||
cx="24.306795"
|
||||
cy="42.07798"
|
||||
fx="24.306795"
|
||||
fy="42.07798"
|
||||
r="15.821514"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.284916,0.000000,30.08928)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4404"
|
||||
id="linearGradient4410"
|
||||
x1="16.812500"
|
||||
y1="1.8750000"
|
||||
x2="16.812500"
|
||||
y2="4.7187500"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1.319549,0.000000,0.000000,1.362060,40.38853,-0.362057)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5866"
|
||||
id="linearGradient5872"
|
||||
x1="19.452349"
|
||||
y1="13.174174"
|
||||
x2="19.685436"
|
||||
y2="27.095339"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.224255,0.000000,0.000000,1.282176,0.371569,0.264657)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5897"
|
||||
id="linearGradient5903"
|
||||
x1="19.000000"
|
||||
y1="9.7738247"
|
||||
x2="19.000000"
|
||||
y2="15.635596"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.319549,0.000000,0.000000,2.133926,-4.476133,-14.64845)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2590"
|
||||
id="linearGradient2596"
|
||||
x1="19.970377"
|
||||
y1="6.1167107"
|
||||
x2="19.970377"
|
||||
y2="2.53125"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.319549,0.000000,0.000000,1.280356,-5.745298,0.249007)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2598"
|
||||
id="linearGradient2604"
|
||||
x1="18.431311"
|
||||
y1="19.119474"
|
||||
x2="18.402472"
|
||||
y2="4.2702327"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.319549,0.000000,0.000000,1.299013,-3.106200,-1.336165)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2896"
|
||||
id="linearGradient2902"
|
||||
x1="14.584077"
|
||||
y1="1.6392649"
|
||||
x2="14.552828"
|
||||
y2="2.4912448"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,1.594214,0.000000,-0.790249)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2906"
|
||||
id="linearGradient2912"
|
||||
x1="13.354311"
|
||||
y1="1.4866425"
|
||||
x2="14.075844"
|
||||
y2="2.4017651"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,1.184816,0.000000,-0.727880)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="158"
|
||||
inkscape:window-x="433"
|
||||
inkscape:window-height="690"
|
||||
inkscape:window-width="872"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer5"
|
||||
inkscape:cy="24"
|
||||
inkscape:cx="24"
|
||||
inkscape:zoom="9.8333333"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.25490196"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>New Bookmark</dc:title>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>bookmark</rdf:li>
|
||||
<rdf:li>remember</rdf:li>
|
||||
<rdf:li>favorite</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Andreas Nilsson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source />
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
<dc:description>create bookmark action</dc:description>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer6"
|
||||
inkscape:label="Shadow">
|
||||
<g
|
||||
style="display:inline"
|
||||
id="g5022"
|
||||
transform="matrix(2.165152e-2,0,0,1.485743e-2,43.0076,42.68539)">
|
||||
<rect
|
||||
y="-150.69685"
|
||||
x="-1559.2523"
|
||||
height="478.35718"
|
||||
width="1339.6335"
|
||||
id="rect4173"
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5058"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
id="path5018"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
style="display:inline"
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Base"
|
||||
id="layer1">
|
||||
<rect
|
||||
style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15391"
|
||||
width="34.875000"
|
||||
height="41.063431"
|
||||
x="6.5000000"
|
||||
y="3.5000000"
|
||||
ry="1.1490481"
|
||||
rx="1.1490486" />
|
||||
<rect
|
||||
style="color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:0.99999958;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15660"
|
||||
width="32.937012"
|
||||
height="39.028210"
|
||||
x="7.5024552"
|
||||
y="4.5010486"
|
||||
ry="0.14904849"
|
||||
rx="0.14904852" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.98855311;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.017543854"
|
||||
d="M 11.505723,5.4942766 L 11.505723,43.400869"
|
||||
id="path15672"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:0.20467831"
|
||||
d="M 12.500000,5.0205154 L 12.500000,43.038228"
|
||||
id="path15674"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer5"
|
||||
inkscape:label="Text"
|
||||
style="display:inline">
|
||||
<g
|
||||
id="g2188">
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15686"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="9.0000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15688"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="11.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15690"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="13.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15692"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="15.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15694"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="17.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15696"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="19.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15698"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="21.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15700"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999994"
|
||||
y="23.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15732"
|
||||
width="9.0000057"
|
||||
height="1.0000000"
|
||||
x="15.999986"
|
||||
y="25.000000"
|
||||
rx="0.062003858"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15736"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999986"
|
||||
y="29.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15738"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999986"
|
||||
y="31.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15740"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999986"
|
||||
y="33.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15742"
|
||||
width="20.000006"
|
||||
height="1.0000000"
|
||||
x="15.999986"
|
||||
y="35.000000"
|
||||
rx="0.13778631"
|
||||
ry="0.065390877" />
|
||||
<rect
|
||||
style="color:#000000;fill:#9b9b9b;fill-opacity:0.54970759;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:0.081871338;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15744"
|
||||
width="14.000014"
|
||||
height="1.0000000"
|
||||
x="15.999986"
|
||||
y="37.000000"
|
||||
rx="0.096450485"
|
||||
ry="0.065390877" />
|
||||
</g>
|
||||
<path
|
||||
style="opacity:0.28021976;fill:url(#linearGradient5872);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 28.245858,31.324906 L 21.147869,27.133701 L 14.30757,30.8838 L 13.761859,3.9475667 L 28.549598,3.9475667 L 28.245858,31.324906 z "
|
||||
id="path5138"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
style="fill:url(#linearGradient2604);fill-opacity:1;fill-rule:evenodd;stroke:#364878;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;display:inline"
|
||||
d="M 12.427339,3.5180202 C 12.427339,3.5180202 12.240033,0.60520607 15.107867,0.54270607 L 25.119343,0.50728624 C 26.277287,0.50728624 26.581888,1.1910178 26.581888,2.1095589 L 26.581888,29.729916 L 20.545426,24.533862 L 14.674346,29.729916 L 14.591655,3.519629 L 12.427339,3.5180202 z "
|
||||
id="path2204"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="opacity:0.4450549;fill:url(#linearGradient4410);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.25pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 13.030252,3.0117919 C 13.011046,2.225362 13.312918,1.0801307 15.375418,1.0176307 L 25.027906,1 C 25.640922,1 26.090152,1.1674319 26.090152,1.7994802 L 26.060994,10.491851 L 15.317102,10.491851 L 15.192102,2.9993251 C 15.192102,2.9993251 13.030252,3.0117919 13.030252,3.0117919 z "
|
||||
id="path3668"
|
||||
sodipodi:nodetypes="cccccccs" />
|
||||
<rect
|
||||
style="opacity:0.28021976;fill:url(#linearGradient5903);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect5895"
|
||||
width="10.556392"
|
||||
height="12.803556"
|
||||
x="15.317101"
|
||||
y="6.6907959"
|
||||
rx="0.062003858"
|
||||
ry="0.065390877" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2596);stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.19125683;display:inline"
|
||||
d="M 24.476832,2.2095507 L 25.575535,3.113139 L 25.547445,27.511911 L 20.497463,23.203758 L 15.704084,27.415203 L 15.699081,2.7495618 L 24.476832,2.2095507 z "
|
||||
id="path5969"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
style="opacity:0.48295456;color:#000000;fill:url(#linearGradient2912);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.10533953;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 15.158602,3.9384083 L 15.114407,1.0335178 C 12.983906,1.0335178 12.993087,2.9680775 12.993087,3.9384083 L 15.158602,3.9384083 z "
|
||||
id="path2894"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path2904"
|
||||
d="M 15.158602,3.9384086 L 15.114407,1.8247593 C 12.81631,1.8426926 12.993087,3.9384086 12.993087,3.9384086 L 15.158602,3.9384086 z "
|
||||
style="opacity:0.35795455;color:#000000;fill:url(#linearGradient2902);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.10533953;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 28 KiB |
@ -1,533 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="document-print.svg"
|
||||
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2994"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective84" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient7612">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7614" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop7616" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7612"
|
||||
id="radialGradient7618"
|
||||
cx="24.000000"
|
||||
cy="41.875000"
|
||||
fx="24.000000"
|
||||
fy="41.875000"
|
||||
r="19.125000"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,0.000000,27.91667)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient4762">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.12371134;"
|
||||
offset="0.0000000"
|
||||
id="stop4764" />
|
||||
<stop
|
||||
id="stop4768"
|
||||
offset="0.10344828"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4766" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4741">
|
||||
<stop
|
||||
id="stop4743"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#dcdcda;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4745"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#bab9b7;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4733">
|
||||
<stop
|
||||
id="stop4735"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#000000;stop-opacity:0.23711340;" />
|
||||
<stop
|
||||
id="stop4737"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4698">
|
||||
<stop
|
||||
id="stop4700"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#fffffd;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#bbbbb9;stop-opacity:1.0000000;"
|
||||
offset="0.50000000"
|
||||
id="stop4706" />
|
||||
<stop
|
||||
id="stop4702"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#000000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4688">
|
||||
<stop
|
||||
id="stop4690"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#666666;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4692"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4680"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4682"
|
||||
offset="0"
|
||||
style="stop-color:#f7f6f5;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4684"
|
||||
offset="1"
|
||||
style="stop-color:#f7f6f5;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4668">
|
||||
<stop
|
||||
id="stop4670"
|
||||
offset="0"
|
||||
style="stop-color:#8e8d87;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#cbc9c1;stop-opacity:1.0000000;"
|
||||
offset="0.27586207"
|
||||
id="stop4676" />
|
||||
<stop
|
||||
id="stop4672"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#8e8d87;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient259">
|
||||
<stop
|
||||
id="stop260"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#e0e0e0;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.40546969"
|
||||
id="stop4886" />
|
||||
<stop
|
||||
style="stop-color:#cdcdcd;stop-opacity:1.0000000;"
|
||||
offset="0.53448278"
|
||||
id="stop4884" />
|
||||
<stop
|
||||
id="stop261"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#494949;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient15662">
|
||||
<stop
|
||||
id="stop15664"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
|
||||
<stop
|
||||
id="stop15666"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="2.1227016"
|
||||
fy="26.925594"
|
||||
fx="9.1295490"
|
||||
cy="26.925594"
|
||||
cx="9.1295490"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1433"
|
||||
xlink:href="#linearGradient4698"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="72.064316"
|
||||
x2="9.9128132"
|
||||
y1="57.227650"
|
||||
x1="9.8698082"
|
||||
gradientTransform="matrix(2.772086,0.000000,0.000000,0.360739,0.618718,2.883883)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1447"
|
||||
xlink:href="#linearGradient4733"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="54.136139"
|
||||
x2="10.338233"
|
||||
y1="64.652260"
|
||||
x1="10.338233"
|
||||
gradientTransform="matrix(2.369844,0.000000,0.000000,0.421969,0.000000,2.000000)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1451"
|
||||
xlink:href="#linearGradient4680"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="62.282467"
|
||||
x2="9.7052784"
|
||||
y1="70.724976"
|
||||
x1="9.7316532"
|
||||
gradientTransform="matrix(2.369844,0.000000,0.000000,0.421969,0.000000,2.000000)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1453"
|
||||
xlink:href="#linearGradient4688"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="19.337463"
|
||||
x2="20.717800"
|
||||
y1="25.140253"
|
||||
x1="20.771229"
|
||||
gradientTransform="matrix(1.198769,0,0,0.853565,-0.143086,2.034513)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1456"
|
||||
xlink:href="#linearGradient15662"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="25.247311"
|
||||
x2="24.789707"
|
||||
y1="3.6785457"
|
||||
x1="25.056711"
|
||||
gradientTransform="matrix(0.944939,0,0,1.076147,6.844577e-2,4.093177)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1459"
|
||||
xlink:href="#linearGradient259"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="58.831264"
|
||||
x2="15.487823"
|
||||
y1="32.539238"
|
||||
x1="15.387969"
|
||||
gradientTransform="matrix(1.490161,0,0,0.668741,8.895132e-2,2)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1464"
|
||||
xlink:href="#linearGradient4762"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="88.294930"
|
||||
x2="18.972126"
|
||||
y1="88.294930"
|
||||
x1="1.8456430"
|
||||
gradientTransform="matrix(2.291824,0,0,0.434269,8.855179e-2,2)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1468"
|
||||
xlink:href="#linearGradient4741"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="88.294933"
|
||||
x2="18.972126"
|
||||
y1="88.294933"
|
||||
x1="1.8456431"
|
||||
gradientTransform="matrix(2.30272,0,0,0.437918,0,0.584034)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1471"
|
||||
xlink:href="#linearGradient4668"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="160"
|
||||
inkscape:window-x="331"
|
||||
inkscape:window-height="688"
|
||||
inkscape:window-width="872"
|
||||
inkscape:guide-bbox="true"
|
||||
showguides="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="-18.264187"
|
||||
inkscape:cx="-72.591911"
|
||||
inkscape:zoom="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.090196078"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false"
|
||||
fill="#729fcf" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Print Document</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>document</rdf:li>
|
||||
<rdf:li>lpr</rdf:li>
|
||||
<rdf:li>print</rdf:li>
|
||||
<rdf:li>local</rdf:li>
|
||||
<rdf:li>laser</rdf:li>
|
||||
<rdf:li>bubblejet</rdf:li>
|
||||
<rdf:li>inkjet</rdf:li>
|
||||
<rdf:li>print</rdf:li>
|
||||
<rdf:li>output</rdf:li>
|
||||
<rdf:li>cups</rdf:li>
|
||||
<rdf:li>lpd</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<g
|
||||
style="display:inline"
|
||||
id="g5022"
|
||||
transform="matrix(2.411405e-2,0,0,1.929202e-2,45.48953,39.75228)">
|
||||
<rect
|
||||
y="-150.69685"
|
||||
x="-1559.2523"
|
||||
height="478.35718"
|
||||
width="1339.6335"
|
||||
id="rect4173"
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5058"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
id="path5018"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
<rect
|
||||
ry="1.7115477"
|
||||
rx="1.7115483"
|
||||
y="36.004189"
|
||||
x="4.75"
|
||||
height="6.4915943"
|
||||
width="38.4375"
|
||||
id="rect4652"
|
||||
style="fill:url(#linearGradient1471);fill-opacity:1;stroke:#595959;stroke-width:0.99999982;stroke-miterlimit:4;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cssssssssssss"
|
||||
id="rect4609"
|
||||
d="M 7.1308961,21.5 L 40.870615,21.5 C 41.255661,21.5 41.747648,21.788155 42.051049,22.223919 C 42.354451,22.659684 43.787518,24.83394 44.109448,25.297964 C 44.431378,25.761987 44.502397,26.201852 44.502397,26.774049 L 44.502397,38.850951 C 44.502397,39.764524 43.770402,40.5 42.861152,40.5 L 5.1403596,40.5 C 4.2311094,40.5 3.4991138,39.764524 3.4991138,38.850951 L 3.4991138,26.774049 C 3.4991138,26.280031 3.6002798,25.571641 3.9455202,25.120718 C 4.3811666,24.551713 5.5498664,22.57277 5.8581276,22.153118 C 6.1663887,21.733467 6.7324461,21.5 7.1308961,21.5 z "
|
||||
style="color:#000000;fill:url(#linearGradient1468);fill-opacity:1;fill-rule:nonzero;stroke:#676767;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cssssssss"
|
||||
id="path4718"
|
||||
d="M 7.705278,21.975532 C 7.20729,21.975532 6.5669691,22.107308 6.3043987,22.511224 L 4.4657443,25.339651 C 4.169761,25.794966 4.4993705,26.868141 5.3900051,26.868141 L 42.678553,26.868141 C 43.883282,26.868141 43.8868,25.858073 43.602814,25.428039 L 41.851714,22.776389 C 41.534204,22.295589 41.418956,21.975532 40.625945,21.975532 L 7.705278,21.975532 z "
|
||||
style="fill:#fbfbfb;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1464);stroke-width:0.94696701;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 7.6002951,22.445756 L 40.374658,22.445756 C 40.739745,22.445756 41.206233,22.718629 41.493909,23.131283 C 41.781585,23.543938 42.788049,25.160945 43.093293,25.60036 C 43.398536,26.039775 43.528159,26.456312 43.528159,26.998164 L 43.528159,38.279261 C 43.528159,39.144385 43.394653,39.528356 42.532529,39.528356 L 5.530506,39.528356 C 4.6683828,39.528356 4.472593,39.144385 4.472593,38.279261 L 4.472593,26.998164 C 4.472593,26.530345 4.6930819,25.859523 5.0204282,25.432514 C 5.4334949,24.893685 6.1012112,23.461633 6.393495,23.064237 C 6.6857789,22.666841 7.222497,22.445756 7.6002951,22.445756 z "
|
||||
id="path4750"
|
||||
sodipodi:nodetypes="cssssssssssss" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
id="rect15391"
|
||||
d="M 11.68177,4.4977642 L 36.313839,4.4977642 C 36.964072,4.4977642 37.487546,5.007949 37.487546,5.6416762 L 37.487546,24.348117 L 10.508063,24.348117 L 10.508063,5.6416762 C 10.508063,5.007949 11.031536,4.4977642 11.68177,4.4977642 z "
|
||||
style="color:#000000;fill:url(#linearGradient1459);fill-opacity:1;fill-rule:nonzero;stroke:#898989;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" />
|
||||
<rect
|
||||
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1456);stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15660"
|
||||
width="25.000576"
|
||||
height="18.836374"
|
||||
x="11.498513"
|
||||
y="5.4992466"
|
||||
ry="0.17677675"
|
||||
rx="0.17677672" />
|
||||
<rect
|
||||
ry="1.7115483"
|
||||
rx="1.7115483"
|
||||
y="27.375000"
|
||||
x="6.8750000"
|
||||
height="5.1875000"
|
||||
width="33.750000"
|
||||
id="rect4678"
|
||||
style="fill:url(#linearGradient1451);fill-opacity:1.0000000;stroke:url(#linearGradient1453);stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
transform="translate(0.000000,2.000000)"
|
||||
d="M 10.871767 27.626486 A 1.2816310 1.2816310 0 1 1 8.3085046,27.626486 A 1.2816310 1.2816310 0 1 1 10.871767 27.626486 z"
|
||||
sodipodi:ry="1.2816310"
|
||||
sodipodi:rx="1.2816310"
|
||||
sodipodi:cy="27.626486"
|
||||
sodipodi:cx="9.5901356"
|
||||
id="path4696"
|
||||
style="fill:url(#radialGradient1433);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csscssssc"
|
||||
id="path4731"
|
||||
d="M 11.743718,25.416053 L 37.306218,25.478553 C 37.993716,25.480234 38.294038,25.107558 38.243718,24.478553 L 38.118718,22.916053 L 39.984835,22.916053 C 40.797335,22.916053 40.975035,23.108616 41.172335,23.478553 L 41.672335,24.416053 C 42.199130,25.403793 43.483508,26.390165 42.170495,26.390165 C 37.667784,26.390165 13.993718,26.041053 11.743718,25.416053 z "
|
||||
style="fill:url(#linearGradient1447);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.36571429" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 42.9375,26.5 L 4.8125,26.5"
|
||||
id="path4760"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
transform="translate(0.000000,2.000000)"
|
||||
style="opacity:0.43575415"
|
||||
id="g4849">
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4831"
|
||||
width="19.000000"
|
||||
height="1.0000000"
|
||||
x="14.000000"
|
||||
y="5.0000000" />
|
||||
<rect
|
||||
y="7.0000000"
|
||||
x="14.000000"
|
||||
height="1.0000000"
|
||||
width="19.000000"
|
||||
id="rect4833"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4835"
|
||||
width="19.000000"
|
||||
height="1.0000000"
|
||||
x="14.000000"
|
||||
y="9.0000000" />
|
||||
<rect
|
||||
y="11.000000"
|
||||
x="14.000000"
|
||||
height="1.0000000"
|
||||
width="19.000000"
|
||||
id="rect4837"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4839"
|
||||
width="11.000000"
|
||||
height="1.0000000"
|
||||
x="14.000000"
|
||||
y="13.000000" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="arrow">
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
id="path8643"
|
||||
d="M 21.02159,20.989431 L 27.989391,20.989431 L 27.989391,16.064984 L 31,16.064984 L 24.553756,8 L 17.435622,15.986875 L 21.023684,15.986875 L 21.02159,20.989431 z "
|
||||
style="opacity:1;color:#000000;fill:#a7a7a7;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999958;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 23 KiB |
@ -1,620 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="document-save.svg"
|
||||
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2913"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective104" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6925">
|
||||
<stop
|
||||
style="stop-color:#204a87;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6927" />
|
||||
<stop
|
||||
style="stop-color:#204a87;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6929" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient6901">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop6903" />
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop6905" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4991">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4993" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4995" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4991"
|
||||
id="radialGradient4997"
|
||||
cx="23.447077"
|
||||
cy="6.4576745"
|
||||
fx="23.447077"
|
||||
fy="6.4576745"
|
||||
r="19.0625"
|
||||
gradientTransform="matrix(-1.314471,-1.006312e-2,-1.022964e-2,1.336221,46.22108,-4.909887)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient2187"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop2189"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2191"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2187"
|
||||
id="linearGradient1764"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.914114,1.412791e-16,-1.412791e-16,0.914114,-3.868698,-2.706902)"
|
||||
x1="33.059906"
|
||||
y1="27.394117"
|
||||
x2="12.624337"
|
||||
y2="12.583769" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8662">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8664" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8666" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8662"
|
||||
id="radialGradient8668"
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
r="15.644737"
|
||||
gradientTransform="matrix(1.000000,-7.816467e-32,-1.132409e-32,0.536723,-5.897962e-14,16.87306)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient2555">
|
||||
<stop
|
||||
id="stop2557"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#e6e6e6;stop-opacity:1.0000000;"
|
||||
offset="0.50000000"
|
||||
id="stop2561" />
|
||||
<stop
|
||||
id="stop2563"
|
||||
offset="0.75000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#e1e1e1;stop-opacity:1.0000000;"
|
||||
offset="0.84166664"
|
||||
id="stop2565" />
|
||||
<stop
|
||||
id="stop2559"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4274">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.25490198;"
|
||||
offset="0.0000000"
|
||||
id="stop4276" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="1.0000000"
|
||||
id="stop4278" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4264"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4266"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4268"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4254"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4256"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4258"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4244">
|
||||
<stop
|
||||
id="stop4246"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#e4e4e4;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4248"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#d3d3d3;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4236"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4238"
|
||||
offset="0"
|
||||
style="stop-color:#eeeeee;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4240"
|
||||
offset="1"
|
||||
style="stop-color:#eeeeee;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4228">
|
||||
<stop
|
||||
id="stop4230"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4232"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#9f9f9f;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4184">
|
||||
<stop
|
||||
id="stop4186"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#838383;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4188"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#bbbbbb;stop-opacity:0.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
gradientTransform="translate(0.795493,3.799180)"
|
||||
y2="35.281250"
|
||||
x2="24.687500"
|
||||
y1="35.281250"
|
||||
x1="7.0625000"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient4209"
|
||||
xlink:href="#linearGradient4184"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="40.943935"
|
||||
x2="36.183067"
|
||||
y1="28.481176"
|
||||
x1="7.6046205"
|
||||
id="linearGradient4234"
|
||||
xlink:href="#linearGradient4228"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="33.758667"
|
||||
x2="12.221823"
|
||||
y1="37.205811"
|
||||
x1="12.277412"
|
||||
id="linearGradient4242"
|
||||
xlink:href="#linearGradient4236"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.286242,0.781698,-0.710782,1.169552,-2.354348,0.248140)"
|
||||
r="20.935817"
|
||||
fy="2.9585190"
|
||||
fx="15.571491"
|
||||
cy="2.9585190"
|
||||
cx="15.571491"
|
||||
id="radialGradient4250"
|
||||
xlink:href="#linearGradient4244"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="47.620636"
|
||||
x2="44.096100"
|
||||
y1="4.4331360"
|
||||
x1="12.378357"
|
||||
id="linearGradient4260"
|
||||
xlink:href="#linearGradient4254"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<radialGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.651032,-2.885063e-16,9.455693)"
|
||||
r="23.555494"
|
||||
fy="27.096155"
|
||||
fx="23.201941"
|
||||
cy="27.096155"
|
||||
cx="23.201941"
|
||||
id="radialGradient4270"
|
||||
xlink:href="#linearGradient4264"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="26.357183"
|
||||
x2="23.688078"
|
||||
y1="11.318835"
|
||||
x1="23.688078"
|
||||
id="linearGradient4272"
|
||||
xlink:href="#linearGradient4274"
|
||||
inkscape:collect="always"
|
||||
gradientTransform="translate(0.000000,5.125000)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2555"
|
||||
id="linearGradient2553"
|
||||
x1="33.431175"
|
||||
y1="31.964777"
|
||||
x2="21.747974"
|
||||
y2="11.780679"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6901"
|
||||
id="linearGradient6907"
|
||||
x1="14.751649"
|
||||
y1="15.868432"
|
||||
x2="8.8953285"
|
||||
y2="16.743431"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient6925"
|
||||
id="linearGradient6931"
|
||||
x1="12.25"
|
||||
y1="18.25"
|
||||
x2="7"
|
||||
y2="21.118431"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-height="818"
|
||||
inkscape:window-width="999"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer2"
|
||||
inkscape:cy="11.891468"
|
||||
inkscape:cx="-133.68151"
|
||||
inkscape:zoom="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.22745098"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false"
|
||||
fill="#3465a4"
|
||||
stroke="#204a87" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Save</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>hdd</rdf:li>
|
||||
<rdf:li>hard drive</rdf:li>
|
||||
<rdf:li>save</rdf:li>
|
||||
<rdf:li>io</rdf:li>
|
||||
<rdf:li>store</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:identifier />
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="pix"
|
||||
id="layer2"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
style="display:inline"
|
||||
id="g5022"
|
||||
transform="matrix(2.411405e-2,0,0,1.929202e-2,45.48953,41.75228)">
|
||||
<rect
|
||||
y="-150.69685"
|
||||
x="-1559.2523"
|
||||
height="478.35718"
|
||||
width="1339.6335"
|
||||
id="rect4173"
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5058"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
id="path5018"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="cccsccccccccc"
|
||||
id="path4196"
|
||||
d="M 11.28569,13.087628 C 10.66069,13.087628 10.254441,13.377808 10.004442,13.931381 C 10.004441,13.931381 3.5356915,31.034938 3.5356915,31.034938 C 3.5356915,31.034938 3.2856915,31.706497 3.2856915,32.816188 C 3.2856915,32.816188 3.2856915,42.466156 3.2856915,42.466156 C 3.2856915,43.548769 3.943477,44.091158 4.9419415,44.091156 L 43.50444,44.091156 C 44.489293,44.091156 45.09819,43.372976 45.09819,42.247406 L 45.09819,32.597438 C 45.09819,32.597438 45.204153,31.827015 45.00444,31.284938 L 38.28569,14.087631 C 38.101165,13.575725 37.648785,13.099533 37.16069,13.087628 L 11.28569,13.087628 z "
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#535353;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
id="path4170"
|
||||
d="M 3.2735915,32.121812 L 4.0381936,31.429597 L 41.647883,31.492097 L 45.11029,31.809395 L 45.11029,42.247927 C 45.11029,43.373496 44.503272,44.091258 43.518419,44.091258 L 4.9354314,44.091258 C 3.9369667,44.091258 3.2735915,43.549207 3.2735915,42.466594 L 3.2735915,32.121812 z "
|
||||
style="fill:url(#linearGradient4234);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.02044296px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="csccccccs"
|
||||
id="path3093"
|
||||
d="M 3.5490842,31.039404 C 2.8347985,32.50369 3.5484686,33.432261 4.5847985,33.432261 C 4.5847985,33.432261 43.584797,33.432261 43.584797,33.432261 C 44.703844,33.408451 45.430035,32.420356 45.013368,31.289403 L 38.299082,14.078704 C 38.114558,13.566798 37.64432,13.090606 37.156225,13.078701 L 11.299083,13.078701 C 10.674083,13.078701 10.263369,13.382274 10.01337,13.935847 C 10.01337,13.935847 3.5490842,31.039404 3.5490842,31.039404 z "
|
||||
style="fill:url(#radialGradient4250);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<rect
|
||||
y="36.299183"
|
||||
x="7.857996"
|
||||
height="5.5625"
|
||||
width="17.625"
|
||||
id="rect4174"
|
||||
style="opacity:1;color:#000000;fill:url(#linearGradient4209);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.40899992;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cscc"
|
||||
id="path4194"
|
||||
d="M 7.8579947,41.86168 C 7.8579947,41.86168 7.8579947,37.850195 7.8579947,37.850195 C 9.6935221,41.029421 16.154485,41.86168 20.795492,41.86168 C 20.795492,41.86168 7.8579947,41.86168 7.8579947,41.86168 z "
|
||||
style="opacity:0.81142853;fill:url(#linearGradient4242);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
id="path4201"
|
||||
d="M 44.796162,30.753688 C 44.859684,32.003662 44.382159,33.069528 43.474046,33.097438 C 43.474046,33.097438 5.3553296,33.097437 5.3553297,33.097438 C 4.0660978,33.097438 3.4875937,32.772491 3.271279,32.229382 C 3.3630404,33.173714 4.0970964,33.878688 5.3553297,33.878688 C 5.3553296,33.878687 43.474046,33.878688 43.474046,33.878688 C 44.550053,33.845617 45.226851,32.454664 44.82621,30.883897 L 44.796162,30.753688 z "
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
id="path4211"
|
||||
d="M 10.96875,15.28125 C 10.922675,15.481571 10.78125,15.668047 10.78125,15.875 C 10.78125,16.823605 11.37223,17.664474 12.125,18.46875 C 12.365268,18.314675 12.490117,18.114342 12.75,17.96875 C 11.809691,17.152746 11.196604,16.252168 10.96875,15.28125 z M 37.625,15.28125 C 37.396273,16.250866 36.782988,17.153676 35.84375,17.96875 C 36.117894,18.122332 36.247738,18.33699 36.5,18.5 C 37.257262,17.693344 37.8125,16.826956 37.8125,15.875 C 37.8125,15.668047 37.670906,15.481571 37.625,15.28125 z M 39.8125,23.71875 C 39.198709,27.758861 32.513887,30.96875 24.28125,30.96875 C 16.068996,30.968751 9.4211001,27.775964 8.78125,23.75 C 8.7488928,23.947132 8.65625,24.141882 8.65625,24.34375 C 8.6562503,28.661697 15.645354,32.187501 24.28125,32.1875 C 32.917146,32.1875 39.937499,28.661698 39.9375,24.34375 C 39.9375,24.130826 39.848449,23.926394 39.8125,23.71875 z "
|
||||
style="opacity:0.69142857;color:#000000;fill:url(#linearGradient4272);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
transform="translate(8.838843e-2,5.301780)"
|
||||
d="M 8.5736699 25.593554 A 1.3700194 1.016466 0 1 1 5.833631,25.593554 A 1.3700194 1.016466 0 1 1 8.5736699 25.593554 z"
|
||||
sodipodi:ry="1.016466"
|
||||
sodipodi:rx="1.3700194"
|
||||
sodipodi:cy="25.593554"
|
||||
sodipodi:cx="7.2036505"
|
||||
id="path4224"
|
||||
style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.45762706;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.45762706;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="path4226"
|
||||
sodipodi:cx="7.2036505"
|
||||
sodipodi:cy="25.593554"
|
||||
sodipodi:rx="1.3700194"
|
||||
sodipodi:ry="1.016466"
|
||||
d="M 8.5736699 25.593554 A 1.3700194 1.016466 0 1 1 5.833631,25.593554 A 1.3700194 1.016466 0 1 1 8.5736699 25.593554 z"
|
||||
transform="translate(33.96705,5.213390)" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4260);stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 11.642515,13.540723 C 11.040823,13.540723 10.649724,13.820081 10.409049,14.35301 C 10.409048,14.35301 3.9940341,30.943732 3.9940341,30.943732 C 3.9940341,30.943732 3.7533573,31.590247 3.7533573,32.658555 C 3.7533573,32.658555 3.7533573,41.948651 3.7533573,41.948651 C 3.7533573,43.303391 4.1974134,43.57555 5.3478414,43.57555 L 43.034746,43.57555 C 44.357872,43.57555 44.569062,43.259153 44.569062,41.738058 L 44.569062,32.447962 C 44.569062,32.447962 44.671072,31.706271 44.478807,31.184409 L 37.885616,14.378434 C 37.707973,13.885617 37.334964,13.552184 36.865071,13.540723 L 11.642515,13.540723 z "
|
||||
id="path4252"
|
||||
sodipodi:nodetypes="cccsccccccccc" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372885"
|
||||
d="M 40.5,36.554166 L 40.5,41.575101"
|
||||
id="path4282" />
|
||||
<path
|
||||
id="path4284"
|
||||
d="M 38.5,36.613943 L 38.5,41.634878"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372885" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372885"
|
||||
d="M 36.5,36.613943 L 36.5,41.634878"
|
||||
id="path4286" />
|
||||
<path
|
||||
id="path4288"
|
||||
d="M 34.5,36.613943 L 34.5,41.634878"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372885" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372885"
|
||||
d="M 32.5,36.613943 L 32.5,41.634878"
|
||||
id="path4290" />
|
||||
<path
|
||||
id="path4292"
|
||||
d="M 30.5,36.613943 L 30.5,41.634878"
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.42372885" />
|
||||
<path
|
||||
id="path4294"
|
||||
d="M 39.5,36.604065 L 39.5,41.625"
|
||||
style="opacity:0.09714284;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:0.09714284;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 37.5,36.663842 L 37.5,41.684777"
|
||||
id="path4296" />
|
||||
<path
|
||||
id="path4298"
|
||||
d="M 35.5,36.663842 L 35.5,41.684777"
|
||||
style="opacity:0.09714284;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:0.09714284;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 33.5,36.663842 L 33.5,41.684777"
|
||||
id="path4300" />
|
||||
<path
|
||||
id="path4302"
|
||||
d="M 31.5,36.663842 L 31.5,41.684777"
|
||||
style="opacity:0.09714284;fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000048px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
id="path4572"
|
||||
d="M 7.875,36.3125 L 7.875,41.84375 L 20.4375,41.84375 L 8.21875,41.5 L 7.875,36.3125 z "
|
||||
style="opacity:0.43999999;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.20571427;color:#000000;fill:url(#linearGradient2553);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.93365198;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.42372879;visibility:visible;display:inline;overflow:visible"
|
||||
id="path2545"
|
||||
sodipodi:cx="25"
|
||||
sodipodi:cy="19.5625"
|
||||
sodipodi:rx="14.875"
|
||||
sodipodi:ry="6.6875"
|
||||
d="M 39.875 19.5625 A 14.875 6.6875 0 1 1 10.125,19.5625 A 14.875 6.6875 0 1 1 39.875 19.5625 z"
|
||||
transform="matrix(1.037815,0.000000,0.000000,1.060747,-1.632878,3.030370)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
inkscape:label="down">
|
||||
<path
|
||||
transform="matrix(1.130190,1.178179e-16,7.918544e-17,-0.759601,-3.909725,53.66554)"
|
||||
d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
|
||||
sodipodi:ry="8.3968935"
|
||||
sodipodi:rx="15.644737"
|
||||
sodipodi:cy="36.421127"
|
||||
sodipodi:cx="24.837126"
|
||||
id="path8660"
|
||||
style="opacity:0.14117647;color:#000000;fill:url(#radialGradient8668);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
style="opacity:1;color:#000000;fill:url(#linearGradient6907);fill-opacity:1.0;fill-rule:nonzero;stroke:url(#linearGradient6931);stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
|
||||
d="M 3.2034501,25.835194 C 2.1729477,-5.3853369 28.741616,-0.4511153 28.582416,15.788689 L 35.89533,15.788689 L 24.517652,28.774671 L 12.585426,15.788689 C 12.585426,15.788689 20.126859,15.788689 20.126859,15.788689 C 20.583921,4.8193225 3.4092324,1.6100346 3.2034501,25.835194 z "
|
||||
id="path1432"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
id="path2177"
|
||||
d="M 7.6642103,9.1041047 C 12.40638,-0.0400306 28.122336,2.7175443 27.761604,16.579393 L 34.078976,16.579393 C 34.078976,16.579393 24.513151,27.536769 24.513151,27.536769 L 14.41668,16.579393 C 14.41668,16.579393 20.87332,16.579393 20.87332,16.579393 C 21.144975,5.0041615 10.922265,5.5345215 7.6642103,9.1041047 z "
|
||||
style="opacity:0.47159091;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1764);stroke-width:0.99999934;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" />
|
||||
<path
|
||||
style="opacity:0.49431817;color:#000000;fill:url(#radialGradient4997);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.9999997;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 34.767155,16.211613 L 32.782979,18.757322 C 27.372947,17.241029 24.896829,21.486664 17.109284,20.489112 L 13.247998,16.080077 L 20.434468,16.162862 C 20.483219,4.3164571 8.3443098,4.998966 5.0292663,13.627829 C 8.8372201,-1.2611216 27.893316,0.8064118 28.28332,16.114112 L 34.767155,16.211613 z "
|
||||
id="path4989"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 29 KiB |
@ -1,201 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="go-down.svg"
|
||||
sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/actions"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:version="0.32"
|
||||
id="svg11300"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
|
||||
inkscape:export-xdpi="90.000000"
|
||||
inkscape:export-ydpi="90.000000"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective24" />
|
||||
<linearGradient
|
||||
id="linearGradient1442">
|
||||
<stop
|
||||
id="stop1444"
|
||||
offset="0"
|
||||
style="stop-color:#73d216" />
|
||||
<stop
|
||||
id="stop1446"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#4e9a06" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient8662"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop8664"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop8666"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient8650"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop8652"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop8654"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8662"
|
||||
id="radialGradient1444"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.536723,1.614716e-15,16.87306)"
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
r="15.644737" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1442"
|
||||
id="radialGradient1469"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.871885e-16,-0.843022,1.020168,2.265228e-16,0.606436,42.58614)"
|
||||
cx="35.292667"
|
||||
cy="20.494493"
|
||||
fx="35.292667"
|
||||
fy="20.494493"
|
||||
r="16.956199" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8650"
|
||||
id="radialGradient1471"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(3.749427e-16,-2.046729,-1.557610,-2.853404e-16,44.11559,66.93275)"
|
||||
cx="15.987216"
|
||||
cy="1.5350308"
|
||||
fx="15.987216"
|
||||
fy="1.5350308"
|
||||
r="17.171415" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-height="818"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="23.239067"
|
||||
inkscape:cx="15.972815"
|
||||
inkscape:zoom="11.313708"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.25490196"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
fill="#4e9a06"
|
||||
stroke="#4e9a06" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:title>Go Down</dc:title>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>go</rdf:li>
|
||||
<rdf:li>lower</rdf:li>
|
||||
<rdf:li>down</rdf:li>
|
||||
<rdf:li>arrow</rdf:li>
|
||||
<rdf:li>pointer</rdf:li>
|
||||
<rdf:li>></rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Andreas Nilsson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<path
|
||||
transform="matrix(1.214466,0.000000,0.000000,0.595458,-6.163846,16.31275)"
|
||||
d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
|
||||
sodipodi:ry="8.3968935"
|
||||
sodipodi:rx="15.644737"
|
||||
sodipodi:cy="36.421127"
|
||||
sodipodi:cx="24.837126"
|
||||
id="path8660"
|
||||
style="opacity:0.20454545;color:#000000;fill:url(#radialGradient1444);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<g
|
||||
id="g1464"
|
||||
transform="matrix(-1.000000,0.000000,0.000000,-1.000000,47.02856,43.99921)">
|
||||
<path
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1469);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3a7304;stroke-width:1.0000004;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 14.519136,38.500000 L 32.524165,38.496094 L 32.524165,25.504468 L 40.519531,25.496656 L 23.374809,5.4992135 L 6.5285585,25.497284 L 14.524440,25.501074 L 14.519136,38.500000 z "
|
||||
id="path8643"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="opacity:0.50802141;color:#000000;fill:url(#radialGradient1471);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 39.429889,24.993467 L 32.023498,25.005186 L 32.026179,37.998023 L 16.647623,37.98887 C 17.417545,19.64788 27.370272,26.995797 32.029282,16.341991 L 39.429889,24.993467 z "
|
||||
id="path8645"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
id="path8658"
|
||||
d="M 15.520704,37.496094 L 31.522109,37.500000 L 31.522109,24.507050 L 38.338920,24.491425 L 23.384644,7.0388396 L 8.6781173,24.495782 L 15.518018,24.501029 L 15.520704,37.496094 z "
|
||||
style="opacity:0.48128340;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000004;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.2 KiB |
@ -1,197 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="go-up.svg"
|
||||
sodipodi:docbase="/home/tigert/cvs/freedesktop.org/tango-icon-theme/scalable/actions"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:version="0.32"
|
||||
id="svg11300"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
|
||||
inkscape:export-xdpi="90.000000"
|
||||
inkscape:export-ydpi="90.000000"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective23" />
|
||||
<linearGradient
|
||||
id="linearGradient2304">
|
||||
<stop
|
||||
id="stop2306"
|
||||
offset="0"
|
||||
style="stop-color:#73d216" />
|
||||
<stop
|
||||
id="stop2308"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#4e9a06" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient8662"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop8664"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop8666"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient8650"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop8652"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop8654"
|
||||
offset="1"
|
||||
style="stop-color:#ffffff;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8650"
|
||||
id="radialGradient1438"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-3.749427e-16,-2.046729,1.557610,-2.853404e-16,2.767009,66.93275)"
|
||||
cx="24.53788"
|
||||
cy="0.40010813"
|
||||
fx="24.53788"
|
||||
fy="0.40010813"
|
||||
r="17.171415" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2304"
|
||||
id="radialGradient1441"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.871885e-16,-0.843022,1.020168,2.265228e-16,0.606436,42.58614)"
|
||||
cx="11.319205"
|
||||
cy="22.454971"
|
||||
fx="11.319205"
|
||||
fy="22.454971"
|
||||
r="16.956199" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8662"
|
||||
id="radialGradient1444"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.536723,1.614716e-15,16.87306)"
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
r="15.644737" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-height="818"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="25.620377"
|
||||
inkscape:cx="9.6380363"
|
||||
inkscape:zoom="13.059378"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.25490196"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
fill="#73d216"
|
||||
stroke="#73d216" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:title>Go Up</dc:title>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>go</rdf:li>
|
||||
<rdf:li>higher</rdf:li>
|
||||
<rdf:li>up</rdf:li>
|
||||
<rdf:li>arrow</rdf:li>
|
||||
<rdf:li>pointer</rdf:li>
|
||||
<rdf:li>></rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Andreas Nilsson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<path
|
||||
transform="matrix(1.214466,0.000000,0.000000,0.595458,-6.163846,16.31275)"
|
||||
d="M 40.481863 36.421127 A 15.644737 8.3968935 0 1 1 9.1923885,36.421127 A 15.644737 8.3968935 0 1 1 40.481863 36.421127 z"
|
||||
sodipodi:ry="8.3968935"
|
||||
sodipodi:rx="15.644737"
|
||||
sodipodi:cy="36.421127"
|
||||
sodipodi:cx="24.837126"
|
||||
id="path8660"
|
||||
style="opacity:0.29946521;color:#000000;fill:url(#radialGradient1444);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
id="path8643"
|
||||
d="M 14.491792,38.500000 L 32.469477,38.500000 L 32.469477,25.547437 L 40.500000,25.547437 L 23.374809,5.4992135 L 6.5285585,25.489471 L 14.497096,25.555762 L 14.491792,38.500000 z "
|
||||
style="opacity:1.0000000;color:#000000;fill:url(#radialGradient1441);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#3a7304;stroke-width:1.0000004;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccscc"
|
||||
id="path8645"
|
||||
d="M 7.5855237,25.03253 L 14.995821,25.03253 L 15.062422,31.594339 C 20.718034,20.593878 31.055517,22.749928 31.656768,15.966674 C 31.656768,15.966674 23.366938,6.4219692 23.366938,6.4219692 L 7.5855237,25.03253 z "
|
||||
style="opacity:0.50802141;color:#000000;fill:url(#radialGradient1438);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
style="opacity:0.48128340;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.0000004;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:10.000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 15.602735,37.500000 L 31.502578,37.500000 L 31.502578,24.507050 L 38.311576,24.507050 L 23.361206,7.0700896 L 8.6546798,24.550470 L 15.475049,24.528373 L 15.602735,37.500000 z "
|
||||
id="path8658"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.0 KiB |
@ -1,202 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg3007"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="nav-outline.svg">
|
||||
<defs
|
||||
id="defs3009">
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter5333"
|
||||
x="-0.16623206"
|
||||
width="1.3324641"
|
||||
y="-0.030014125"
|
||||
height="1.0600282">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.47888561"
|
||||
id="feGaussianBlur5335" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.945051"
|
||||
inkscape:cx="20.614872"
|
||||
inkscape:cy="23.423899"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="773"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3012">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="fill:#f0f0f0;fill-rule:evenodd;stroke:#808080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
|
||||
id="rect3783"
|
||||
width="46.16272"
|
||||
height="45.59861"
|
||||
x="1.0341953"
|
||||
y="0.99112236" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect3787"
|
||||
width="2.8205326"
|
||||
height="2.7823999"
|
||||
x="4.2307992"
|
||||
y="4.093708" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5257"
|
||||
width="24.68285"
|
||||
height="1.4102663"
|
||||
x="8.0855274"
|
||||
y="4.657815" />
|
||||
<rect
|
||||
y="8.4185247"
|
||||
x="8.4615984"
|
||||
height="2.7823999"
|
||||
width="2.8205326"
|
||||
id="rect5259"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="9.0766497"
|
||||
x="12.410344"
|
||||
height="1.4102663"
|
||||
width="30.498053"
|
||||
id="rect5261"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5263"
|
||||
width="2.8205326"
|
||||
height="2.7823999"
|
||||
x="8.4615984"
|
||||
y="13.307448" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5265"
|
||||
width="24.972752"
|
||||
height="1.4102663"
|
||||
x="12.410344"
|
||||
y="13.965573" />
|
||||
<rect
|
||||
y="17.444229"
|
||||
x="4.3248172"
|
||||
height="2.7823999"
|
||||
width="2.8205326"
|
||||
id="rect5267"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="18.008337"
|
||||
x="8.1795454"
|
||||
height="1.4102663"
|
||||
width="25.101433"
|
||||
id="rect5269"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5271"
|
||||
width="2.8205326"
|
||||
height="2.7823999"
|
||||
x="8.5556164"
|
||||
y="21.769047" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5273"
|
||||
width="28.782515"
|
||||
height="1.4102663"
|
||||
x="12.880433"
|
||||
y="22.427172" />
|
||||
<rect
|
||||
y="26.65797"
|
||||
x="13.475181"
|
||||
height="2.7823999"
|
||||
width="2.8205326"
|
||||
id="rect5275"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="27.316095"
|
||||
x="17.479"
|
||||
height="1.4102663"
|
||||
width="23.681646"
|
||||
id="rect5277"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5279"
|
||||
width="2.8205326"
|
||||
height="2.7823999"
|
||||
x="8.5130949"
|
||||
y="31.006269" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5281"
|
||||
width="24.557148"
|
||||
height="1.4102663"
|
||||
x="12.592034"
|
||||
y="31.636858" />
|
||||
<rect
|
||||
y="35.464046"
|
||||
x="13.475181"
|
||||
height="2.7823999"
|
||||
width="2.8205326"
|
||||
id="rect5283"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="36.055695"
|
||||
x="17.744923"
|
||||
height="1.4102663"
|
||||
width="18.577394"
|
||||
id="rect5285"
|
||||
style="fill:#404040;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5287"
|
||||
width="2.8205326"
|
||||
height="2.7823999"
|
||||
x="13.54166"
|
||||
y="40.35297" />
|
||||
<rect
|
||||
style="fill:#404040;fill-opacity:1;stroke:none"
|
||||
id="rect5289"
|
||||
width="23.080858"
|
||||
height="1.4102663"
|
||||
x="17.678442"
|
||||
y="40.944618" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 5.3 KiB |
@ -1,283 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg3007"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="nav-thumbs.svg">
|
||||
<defs
|
||||
id="defs3009">
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter5333"
|
||||
x="-0.16623206"
|
||||
width="1.3324641"
|
||||
y="-0.030014125"
|
||||
height="1.0600282">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.47888561"
|
||||
id="feGaussianBlur5335" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter5966">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.3570515"
|
||||
id="feGaussianBlur5968" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.945051"
|
||||
inkscape:cx="9.375932"
|
||||
inkscape:cy="24.942259"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="773"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3012">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<rect
|
||||
style="fill:#484848;fill-rule:evenodd;stroke:#808080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
|
||||
id="rect3783"
|
||||
width="46.16272"
|
||||
height="45.59861"
|
||||
x="1.0341953"
|
||||
y="0.99112236" />
|
||||
<rect
|
||||
y="4.7876148"
|
||||
x="14.359808"
|
||||
height="12.764274"
|
||||
width="9.7061672"
|
||||
id="rect5960"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter5966)"
|
||||
transform="matrix(1.0465713,0,0,1.0642851,3.6426579,-2.1141417)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="rect5958"
|
||||
width="9.7061672"
|
||||
height="12.764274"
|
||||
x="18.897236"
|
||||
y="3.1920807" />
|
||||
<rect
|
||||
transform="matrix(1.0465713,0,0,1.0642851,3.6426579,13.043433)"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter5966)"
|
||||
id="rect5970"
|
||||
width="9.7061672"
|
||||
height="12.764274"
|
||||
x="14.359808"
|
||||
y="4.7876148" />
|
||||
<rect
|
||||
y="18.349655"
|
||||
x="18.897236"
|
||||
height="12.764274"
|
||||
width="9.7061672"
|
||||
id="rect5972"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="4.7876148"
|
||||
x="14.359808"
|
||||
height="12.764274"
|
||||
width="9.7061672"
|
||||
id="rect5974"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none;filter:url(#filter5966)"
|
||||
transform="matrix(1.0465713,0,0,0.9368834,3.6426579,29.209842)" />
|
||||
<rect
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="rect5976"
|
||||
width="9.7061672"
|
||||
height="11.833546"
|
||||
x="18.897236"
|
||||
y="33.906113" />
|
||||
<rect
|
||||
y="4.905829"
|
||||
x="19.960924"
|
||||
height="0.66480595"
|
||||
width="7.7117486"
|
||||
id="rect5995"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6177"
|
||||
width="3.6219761"
|
||||
height="0.66480595"
|
||||
x="19.960924"
|
||||
y="6.0340419" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6179"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.960924"
|
||||
y="7.2562728" />
|
||||
<rect
|
||||
y="8.3844862"
|
||||
x="19.960924"
|
||||
height="0.66480595"
|
||||
width="5.6903667"
|
||||
id="rect6181"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="9.7007341"
|
||||
x="19.960924"
|
||||
height="0.66480595"
|
||||
width="7.7117486"
|
||||
id="rect6183"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6185"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.960924"
|
||||
y="10.828948" />
|
||||
<rect
|
||||
y="12.051179"
|
||||
x="19.960924"
|
||||
height="0.66480595"
|
||||
width="7.7117486"
|
||||
id="rect6187"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="14.213587"
|
||||
x="23.204536"
|
||||
height="0.66480595"
|
||||
width="1.2245234"
|
||||
id="rect6189"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6209"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.772888"
|
||||
y="19.854652" />
|
||||
<rect
|
||||
y="39.08128"
|
||||
x="19.913914"
|
||||
height="0.66480595"
|
||||
width="3.6219761"
|
||||
id="rect6211"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
y="22.205095"
|
||||
x="19.772888"
|
||||
height="0.66480595"
|
||||
width="6.6305442"
|
||||
id="rect6213"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6215"
|
||||
width="7.7587576"
|
||||
height="0.66480595"
|
||||
x="19.866905"
|
||||
y="37.859051" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6217"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.772888"
|
||||
y="21.029873" />
|
||||
<rect
|
||||
y="25.777771"
|
||||
x="19.772888"
|
||||
height="0.66480595"
|
||||
width="7.7117486"
|
||||
id="rect6219"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6221"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.772888"
|
||||
y="27.000002" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6223"
|
||||
width="1.2245234"
|
||||
height="0.66480595"
|
||||
x="23.204536"
|
||||
y="28.974375" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6225"
|
||||
width="3.6219761"
|
||||
height="0.66480595"
|
||||
x="19.960922"
|
||||
y="42.983021" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6227"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.913914"
|
||||
y="36.777847" />
|
||||
<rect
|
||||
y="35.602627"
|
||||
x="19.913914"
|
||||
height="0.66480595"
|
||||
width="7.7117486"
|
||||
id="rect6231"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#808080;fill-opacity:1;stroke:none"
|
||||
id="rect6233"
|
||||
width="7.7117486"
|
||||
height="0.66480595"
|
||||
x="19.913914"
|
||||
y="40.350525" />
|
||||
<rect
|
||||
y="41.572754"
|
||||
x="19.913914"
|
||||
height="0.66480595"
|
||||
width="7.7117486"
|
||||
id="rect6235"
|
||||
style="fill:#808080;fill-opacity:1;stroke:none" />
|
||||
<rect
|
||||
style="fill:#0000e6;fill-opacity:0.44444448;stroke:none"
|
||||
id="rect6237"
|
||||
width="3.5256658"
|
||||
height="1.927364"
|
||||
x="22.077036"
|
||||
y="23.367346" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 7.6 KiB |
@ -1,297 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48"
|
||||
height="48"
|
||||
id="svg3075"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="pin-down.svg"
|
||||
viewPort="0 0 48 48">
|
||||
<defs
|
||||
id="defs3077">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3804">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3806" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3808" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3965">
|
||||
<stop
|
||||
id="stop3967"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3969" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3885">
|
||||
<stop
|
||||
style="stop-color:#a8b5e9;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3889" />
|
||||
<stop
|
||||
id="stop3891"
|
||||
offset="1"
|
||||
style="stop-color:#1d4488;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3865">
|
||||
<stop
|
||||
style="stop-color:#0e0ec3;stop-opacity:0"
|
||||
offset="0"
|
||||
id="stop3867" />
|
||||
<stop
|
||||
id="stop3883"
|
||||
offset="0.5"
|
||||
style="stop-color:#95b1e4;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#0d29c0;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3869" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3853">
|
||||
<stop
|
||||
style="stop-color:#717171;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3855" />
|
||||
<stop
|
||||
id="stop3861"
|
||||
offset="0.5"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#818181;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3857" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3792"
|
||||
cx="13.508819"
|
||||
cy="30.521608"
|
||||
fx="13.508819"
|
||||
fy="30.521608"
|
||||
r="13.254341"
|
||||
gradientTransform="matrix(1,0,0,1.045977,0,-1.4434017)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="linearGradient3802"
|
||||
x1="15.306904"
|
||||
y1="13.407407"
|
||||
x2="29.35461"
|
||||
y2="30.15519"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.2304178,0,0,1.1235308,-2.1158755,998.83747)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3804"
|
||||
id="radialGradient3812"
|
||||
cx="20.111172"
|
||||
cy="28.238274"
|
||||
fx="20.111172"
|
||||
fy="28.238274"
|
||||
r="7.6291947"
|
||||
gradientTransform="matrix(1.2304178,0,0,1.1452771,-2.1158755,998.22337)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3822"
|
||||
cx="23.985939"
|
||||
cy="24.847366"
|
||||
fx="23.985939"
|
||||
fy="24.847366"
|
||||
r="10.593476"
|
||||
gradientTransform="matrix(0.63682384,0.44303926,-1.1714282,1.6838088,35.523491,-26.055439)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter3856"
|
||||
x="-0.30370581"
|
||||
width="1.6074116"
|
||||
y="-0.32771564"
|
||||
height="1.6554313">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="4.7808869"
|
||||
id="feGaussianBlur3858" />
|
||||
</filter>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3865"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.045977,0,-1.4434017)"
|
||||
cx="13.508819"
|
||||
cy="30.521608"
|
||||
fx="13.508819"
|
||||
fy="30.521608"
|
||||
r="13.254341" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="linearGradient3867"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.2304178,0,0,1.1235308,-2.1158755,998.83747)"
|
||||
x1="15.306904"
|
||||
y1="13.407407"
|
||||
x2="29.35461"
|
||||
y2="30.15519" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3804"
|
||||
id="radialGradient3869"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.2304178,0,0,1.1452771,-2.1158755,998.22337)"
|
||||
cx="20.111172"
|
||||
cy="28.238274"
|
||||
fx="20.111172"
|
||||
fy="28.238274"
|
||||
r="7.6291947" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3871"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.63682384,0.44303926,-1.1714282,1.6838088,35.523491,-26.055439)"
|
||||
cx="23.985939"
|
||||
cy="24.847366"
|
||||
fx="23.985939"
|
||||
fy="24.847366"
|
||||
r="10.593476" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="linearGradient3875"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.98683814,0,0,0.9524914,3.4991888,1004.1467)"
|
||||
x1="15.306904"
|
||||
y1="13.407407"
|
||||
x2="29.35461"
|
||||
y2="30.15519" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3804"
|
||||
id="radialGradient3877"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.195641,0.23932984,-0.18533175,0.95255553,4.5333676,999.33159)"
|
||||
cx="20.111172"
|
||||
cy="28.238274"
|
||||
fx="20.111172"
|
||||
fy="28.238274"
|
||||
r="7.6291947" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3880"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.5847553,0.52693722,-0.99805104,2.7064773,14.11088,-45.304477)"
|
||||
cx="18.133854"
|
||||
cy="19.778509"
|
||||
fx="18.133854"
|
||||
fy="19.778509"
|
||||
r="10.593476" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3882"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.045977,0,-1.4434017)"
|
||||
cx="13.508819"
|
||||
cy="30.521608"
|
||||
fx="13.508819"
|
||||
fy="30.521608"
|
||||
r="13.254341" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="4.9558805"
|
||||
inkscape:cx="3.0237013"
|
||||
inkscape:cy="17.287267"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1291"
|
||||
inkscape:window-height="776"
|
||||
inkscape:window-x="16"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3080">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1004.3622)">
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter3856)"
|
||||
d="m 14.326415,1019.2702 c -8.3327876,4.0675 -9.8235436,10.8833 -8.8783416,15.1336 4.6840646,7.9754 8.3608166,13.8165 24.0118786,12.9139 9.657617,-3.7312 12.9762,-9.3269 13.519293,-15.7389 -0.547269,-4.3839 -1.957958,-9.3396 -5.649854,-14.9317 -3.965534,-2.471 -6.300859,-4.4246 -10.290805,-4.2374 -8.25193,0.5026 -8.752485,4.4502 -12.712171,6.8605 z"
|
||||
id="path3826"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
transform="matrix(0.69099294,0,0,0.75978808,7.3427938,249.11025)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3882);fill-opacity:1;stroke:none"
|
||||
id="path3011"
|
||||
sodipodi:cx="21.176477"
|
||||
sodipodi:cy="31.393986"
|
||||
sodipodi:rx="13.254341"
|
||||
sodipodi:ry="13.863736"
|
||||
d="m 34.430819,31.393986 a 13.254341,13.863736 0 1 1 -26.5086827,0 13.254341,13.863736 0 1 1 26.5086827,0 z"
|
||||
transform="matrix(0.98683814,0,0,0.83062636,2.696034,1005.3655)" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3875);fill-opacity:1;stroke:url(#radialGradient3877);stroke-width:0.9695127;stroke-opacity:1"
|
||||
d="m 17.246758,1026.7905 c -1.7156,4.5052 -2.482464,10.6205 8.726963,10.7476 4.849099,-1.8941 3.522783,-5.3561 6.021544,-11.8282 l -10.973104,-1.5977 z"
|
||||
id="path3794"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3880);fill-opacity:1;stroke:none"
|
||||
id="path3814"
|
||||
sodipodi:cx="24.718111"
|
||||
sodipodi:cy="23.38278"
|
||||
sodipodi:rx="10.593476"
|
||||
sodipodi:ry="9.6854639"
|
||||
d="m 35.311587,23.38278 a 10.593476,9.6854639 0 1 1 -21.186952,0 10.593476,9.6854639 0 1 1 21.186952,0 z"
|
||||
transform="matrix(0.85425691,0,0,0.84187503,3.9779774,1006.7561)" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 9.6 KiB |
@ -1,230 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48"
|
||||
height="48"
|
||||
id="svg3075"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="pin-up.svg"
|
||||
viewPort="0 0 48 48">
|
||||
<defs
|
||||
id="defs3077">
|
||||
<linearGradient
|
||||
id="linearGradient3965">
|
||||
<stop
|
||||
id="stop3967"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3969" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3885">
|
||||
<stop
|
||||
style="stop-color:#a8b5e9;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3889" />
|
||||
<stop
|
||||
id="stop3891"
|
||||
offset="1"
|
||||
style="stop-color:#1d4488;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3865">
|
||||
<stop
|
||||
style="stop-color:#0e0ec3;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3867" />
|
||||
<stop
|
||||
id="stop3883"
|
||||
offset="0.5"
|
||||
style="stop-color:#95b1e4;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#0d29c0;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3869" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3853">
|
||||
<stop
|
||||
style="stop-color:#717171;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3855" />
|
||||
<stop
|
||||
id="stop3861"
|
||||
offset="0.5"
|
||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#818181;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3857" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3853"
|
||||
id="linearGradient3859"
|
||||
x1="7.7696066"
|
||||
y1="34.979828"
|
||||
x2="11.854106"
|
||||
y2="39.107044"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(4.8388015,1001.6582)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3871"
|
||||
cx="14.801222"
|
||||
cy="1030.6609"
|
||||
fx="14.801222"
|
||||
fy="1030.6609"
|
||||
r="10.177785"
|
||||
gradientTransform="matrix(1,0,0,1.0108042,4.8388015,-13.880529)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3865"
|
||||
id="linearGradient3881"
|
||||
x1="15.012629"
|
||||
y1="11.922465"
|
||||
x2="31.098303"
|
||||
y2="28.858271"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.97315436,4.8388015,1002.4769)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3885"
|
||||
id="radialGradient3909"
|
||||
cx="16.437693"
|
||||
cy="22.596292"
|
||||
fx="16.437693"
|
||||
fy="22.596292"
|
||||
r="1.7789712"
|
||||
gradientTransform="matrix(1,0,0,8.3599999,0,-166.30871)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3865"
|
||||
id="linearGradient3927"
|
||||
x1="26.47109"
|
||||
y1="1010.7343"
|
||||
x2="35.294788"
|
||||
y2="1019.8425"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(4.5541661,-2.1347654)" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3965"
|
||||
id="radialGradient3995"
|
||||
cx="23.189369"
|
||||
cy="25.704245"
|
||||
fx="23.189369"
|
||||
fy="25.704245"
|
||||
r="37.336674"
|
||||
gradientTransform="matrix(1,0,0,1.0332422,0,-0.85446479)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4009"
|
||||
x="-0.19299152"
|
||||
width="1.385983"
|
||||
y="-0.18351803"
|
||||
height="1.3670361">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="3.8667902"
|
||||
id="feGaussianBlur4011" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.2819435"
|
||||
inkscape:cx="18.697469"
|
||||
inkscape:cy="17.287267"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="970"
|
||||
inkscape:window-height="778"
|
||||
inkscape:window-x="284"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata3080">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-1004.3622)">
|
||||
<path
|
||||
style="fill:url(#radialGradient3995);stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0;filter:url(#filter4009)"
|
||||
d="M -0.85390618,50.988672 14.231769,27.790888 C 12.21393,25.133052 9.5514307,24.605255 9.9622384,18.824874 13.947134,14.236899 17.362759,16.258973 21.347654,16.54779 l 8.966014,-8.6813789 c 1.467204,-2.4778468 -1.023584,-4.6422045 0.569271,-7.25820222 4.802307,-0.84764718 6.662499,1.15219542 11.527733,6.26197842 4.061691,4.1873637 5.648882,7.0611607 4.411848,9.5352857 -1.075122,2.776443 -4.518349,-0.692782 -5.835025,0.56927 l -9.108332,10.104556 c -0.418785,3.74872 2.078647,7.861968 -1.280859,11.243098 -4.132171,0.818036 -6.734336,-1.933944 -9.819921,-3.557942 z"
|
||||
id="path3955"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(0,1004.3622)"
|
||||
sodipodi:nodetypes="ccccccccccccc" />
|
||||
<g
|
||||
id="g3929">
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3083"
|
||||
d="m 3.2884874,1051.0662 c 3.1862139,-6.2911 11.3693156,-15.19 15.4471616,-20.0327 l 2.86533,3.0086 c -3.476851,3.6575 -10.192375,10.8664 -18.3124916,17.0241 z"
|
||||
style="fill:url(#linearGradient3859);fill-opacity:1;stroke:#a5a5a5;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3863"
|
||||
d="m 11.10078,1023.3294 c 5.038264,10.1095 11.83652,14.8875 18.358981,18.2167 1.196291,-2.5422 1.454996,-5.6203 0,-9.6776 l -8.539061,-8.6814 c -3.704654,-1.8936 -6.871076,-1.3652 -9.81992,0.1423 z"
|
||||
style="fill:url(#radialGradient3871);fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3873"
|
||||
d="m 33.729292,1011.5171 -13.235545,11.4952 c 2.869602,4.2703 6.221839,7.4544 9.108332,9.1408 l 11.385416,-13.0187 z"
|
||||
style="fill:url(#linearGradient3881);fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3893"
|
||||
d="m 33.228885,1011.6148 c 1.843189,2.7806 3.431654,5.6597 7.19852,7.6953 l 5.398891,1.7423 c -7.6738,-4.7914 -10.989683,-9.5828 -13.947133,-14.3741 z"
|
||||
style="fill:url(#linearGradient3927);fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
transform="matrix(0.68275275,-0.5590416,0.45791123,0.47036287,17.42507,1012.2127)"
|
||||
d="m 18.216664,22.596292 a 1.7789712,14.872199 0 1 1 -3.557943,0 1.7789712,14.872199 0 1 1 3.557943,0 z"
|
||||
sodipodi:ry="14.872199"
|
||||
sodipodi:rx="1.7789712"
|
||||
sodipodi:cy="22.596292"
|
||||
sodipodi:cx="16.437693"
|
||||
id="path3901"
|
||||
style="fill:url(#radialGradient3909);fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 8.1 KiB |
BIN
web/images/texture.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
web/images/toolbarButton-bookmark.png
Normal file
After Width: | Height: | Size: 244 B |
BIN
web/images/toolbarButton-download.png
Normal file
After Width: | Height: | Size: 512 B |
BIN
web/images/toolbarButton-menuArrows.png
Normal file
After Width: | Height: | Size: 237 B |
BIN
web/images/toolbarButton-pageDown-rtl.png
Normal file
After Width: | Height: | Size: 558 B |
BIN
web/images/toolbarButton-pageDown.png
Normal file
After Width: | Height: | Size: 353 B |
BIN
web/images/toolbarButton-pageUp-rtl.png
Normal file
After Width: | Height: | Size: 426 B |
BIN
web/images/toolbarButton-pageUp.png
Normal file
After Width: | Height: | Size: 344 B |
BIN
web/images/toolbarButton-print.png
Normal file
After Width: | Height: | Size: 474 B |
BIN
web/images/toolbarButton-sidebarToggle.png
Normal file
After Width: | Height: | Size: 349 B |
BIN
web/images/toolbarButton-viewOutline.png
Normal file
After Width: | Height: | Size: 300 B |
BIN
web/images/toolbarButton-viewThumbnail.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
web/images/toolbarButton-zoomIn.png
Normal file
After Width: | Height: | Size: 228 B |
BIN
web/images/toolbarButton-zoomOut.png
Normal file
After Width: | Height: | Size: 143 B |
@ -1,437 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg6431"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
|
||||
sodipodi:docname="list-add.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs6433">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective70" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2091">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2093" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2095" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient7916">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7918" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.34020618;"
|
||||
offset="1.0000000"
|
||||
id="stop7920" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8662">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8664" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8666" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8662"
|
||||
id="radialGradient1503"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.536723,-1.018989e-13,16.87306)"
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
r="15.644737" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2847">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2849" />
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2851" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2847"
|
||||
id="linearGradient1488"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1.000000,0.000000,0.000000,-1.000000,-1.242480,40.08170)"
|
||||
x1="37.128052"
|
||||
y1="29.729605"
|
||||
x2="37.065414"
|
||||
y2="26.194071" />
|
||||
<linearGradient
|
||||
id="linearGradient2831">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2833" />
|
||||
<stop
|
||||
id="stop2855"
|
||||
offset="0.33333334"
|
||||
style="stop-color:#5b86be;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#83a8d8;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2835" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2831"
|
||||
id="linearGradient1486"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-48.30498,-6.043298)"
|
||||
x1="13.478554"
|
||||
y1="10.612206"
|
||||
x2="15.419417"
|
||||
y2="19.115122" />
|
||||
<linearGradient
|
||||
id="linearGradient2380">
|
||||
<stop
|
||||
style="stop-color:#b9cfe7;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop2382" />
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop2384" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2682">
|
||||
<stop
|
||||
style="stop-color:#3977c3;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2684" />
|
||||
<stop
|
||||
style="stop-color:#89aedc;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2686" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2682"
|
||||
id="linearGradient2688"
|
||||
x1="36.713837"
|
||||
y1="31.455952"
|
||||
x2="37.124462"
|
||||
y2="24.842253"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-48.77039,-5.765705)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2690">
|
||||
<stop
|
||||
style="stop-color:#c4d7eb;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2692" />
|
||||
<stop
|
||||
style="stop-color:#c4d7eb;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2694" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2690"
|
||||
id="linearGradient2696"
|
||||
x1="32.647972"
|
||||
y1="30.748846"
|
||||
x2="37.124462"
|
||||
y2="24.842253"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-48.77039,-5.765705)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2871">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2873" />
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop2875" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2402">
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2404" />
|
||||
<stop
|
||||
style="stop-color:#528ac5;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2406" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2797"
|
||||
id="linearGradient1493"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="5.9649176"
|
||||
y1="26.048164"
|
||||
x2="52.854097"
|
||||
y2="26.048164" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2797">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2799" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2801" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2797"
|
||||
id="linearGradient1491"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="5.9649176"
|
||||
y1="26.048164"
|
||||
x2="52.854097"
|
||||
y2="26.048164" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient7179">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7181" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop7183" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2316">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2318" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.65979379;"
|
||||
offset="1"
|
||||
id="stop2320" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1322">
|
||||
<stop
|
||||
id="stop1324"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#729fcf" />
|
||||
<stop
|
||||
id="stop1326"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#5187d6;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1322"
|
||||
id="linearGradient4975"
|
||||
x1="34.892849"
|
||||
y1="36.422989"
|
||||
x2="45.918697"
|
||||
y2="48.547989"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-18.01785,-13.57119)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7179"
|
||||
id="linearGradient7185"
|
||||
x1="13.435029"
|
||||
y1="13.604306"
|
||||
x2="22.374878"
|
||||
y2="23.554308"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7179"
|
||||
id="linearGradient7189"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="13.435029"
|
||||
y1="13.604306"
|
||||
x2="22.374878"
|
||||
y2="23.554308"
|
||||
gradientTransform="matrix(-1.000000,0.000000,0.000000,-1.000000,47.93934,50.02474)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2380"
|
||||
id="linearGradient7180"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="62.513836"
|
||||
y1="36.061237"
|
||||
x2="15.984863"
|
||||
y2="20.60858" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2871"
|
||||
id="linearGradient7182"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="46.834816"
|
||||
y1="45.264122"
|
||||
x2="45.380436"
|
||||
y2="50.939667" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2402"
|
||||
id="linearGradient7184"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="18.935766"
|
||||
y1="23.667896"
|
||||
x2="53.588622"
|
||||
y2="26.649362" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2871"
|
||||
id="linearGradient7186"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="46.834816"
|
||||
y1="45.264122"
|
||||
x2="45.380436"
|
||||
y2="50.939667" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7916"
|
||||
id="linearGradient7922"
|
||||
x1="16.874998"
|
||||
y1="22.851799"
|
||||
x2="27.900846"
|
||||
y2="34.976799"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2091"
|
||||
id="radialGradient2097"
|
||||
cx="23.070683"
|
||||
cy="35.127438"
|
||||
fx="23.070683"
|
||||
fy="35.127438"
|
||||
r="10.319340"
|
||||
gradientTransform="matrix(0.914812,1.265023e-2,-8.21502e-3,0.213562,2.253914,27.18889)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.15686275"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-123.56934"
|
||||
inkscape:cy="0.031886897"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="818"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="30"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata6436">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Add</dc:title>
|
||||
<dc:date>2006-01-04</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Andreas Nilsson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://tango-project.org</dc:source>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>add</rdf:li>
|
||||
<rdf:li>plus</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="opacity:0.10824742;fill:url(#radialGradient2097);fill-opacity:1;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path1361"
|
||||
sodipodi:cx="22.958872"
|
||||
sodipodi:cy="34.94062"
|
||||
sodipodi:rx="10.31934"
|
||||
sodipodi:ry="2.320194"
|
||||
d="M 33.278212 34.94062 A 10.31934 2.320194 0 1 1 12.639532,34.94062 A 10.31934 2.320194 0 1 1 33.278212 34.94062 z"
|
||||
transform="matrix(1.550487,0,0,1.978714,-12.4813,-32.49103)" />
|
||||
<path
|
||||
style="fill:#75a1d0;fill-opacity:1.0000000;stroke:#3465a4;stroke-width:1.0000004px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 27.514356,37.542682 L 27.514356,28.515722 L 37.492820,28.475543 L 37.492820,21.480219 L 27.523285,21.480219 L 27.514356,11.520049 L 20.498082,11.531210 L 20.502546,21.462362 L 10.512920,21.536022 L 10.477206,28.504561 L 20.511475,28.475543 L 20.518171,37.515896 L 27.514356,37.542682 z "
|
||||
id="text1314"
|
||||
sodipodi:nodetypes="ccccccccccccc" />
|
||||
<path
|
||||
style="opacity:0.40860215;fill:url(#linearGradient4975);fill-opacity:1.0000000;stroke:url(#linearGradient7922);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 26.498702,36.533920 L 26.498702,27.499738 L 36.501304,27.499738 L 36.494607,22.475309 L 26.507630,22.475309 L 26.507630,12.480335 L 21.512796,12.498193 L 21.521725,22.475309 L 11.495536,22.493166 L 11.468750,27.466256 L 21.533143,27.475185 L 21.519750,36.502670 L 26.498702,36.533920 z "
|
||||
id="path7076"
|
||||
sodipodi:nodetypes="ccccccccccccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.31182796"
|
||||
d="M 11.000000,25.000000 C 11.000000,26.937500 36.984375,24.031250 36.984375,24.968750 L 36.984375,21.968750 L 27.000000,22.000000 L 27.000000,12.034772 L 21.000000,12.034772 L 21.000000,22.000000 L 11.000000,22.000000 L 11.000000,25.000000 z "
|
||||
id="path7914"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 14 KiB |
@ -1,425 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="48px"
|
||||
height="48px"
|
||||
id="svg6431"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/actions"
|
||||
sodipodi:docname="list-remove.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
viewbox="0 0 48 48">
|
||||
<defs
|
||||
id="defs6433">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective69" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2091">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2093" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2095" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2091"
|
||||
id="radialGradient2097"
|
||||
cx="23.070683"
|
||||
cy="35.127438"
|
||||
fx="23.070683"
|
||||
fy="35.127438"
|
||||
r="10.319340"
|
||||
gradientTransform="matrix(0.914812,1.265023e-2,-8.21502e-3,0.213562,2.253914,27.18889)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient7916">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7918" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.34020618;"
|
||||
offset="1.0000000"
|
||||
id="stop7920" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient8662">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop8664" />
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop8666" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient8662"
|
||||
id="radialGradient1503"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.536723,-1.018989e-13,16.87306)"
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
r="15.644737" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2847">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2849" />
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2851" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2847"
|
||||
id="linearGradient1488"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1.000000,0.000000,0.000000,-1.000000,-1.242480,40.08170)"
|
||||
x1="37.128052"
|
||||
y1="29.729605"
|
||||
x2="37.065414"
|
||||
y2="26.194071" />
|
||||
<linearGradient
|
||||
id="linearGradient2831">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2833" />
|
||||
<stop
|
||||
id="stop2855"
|
||||
offset="0.33333334"
|
||||
style="stop-color:#5b86be;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#83a8d8;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2835" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2831"
|
||||
id="linearGradient1486"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-48.30498,-6.043298)"
|
||||
x1="13.478554"
|
||||
y1="10.612206"
|
||||
x2="15.419417"
|
||||
y2="19.115122" />
|
||||
<linearGradient
|
||||
id="linearGradient2380">
|
||||
<stop
|
||||
style="stop-color:#b9cfe7;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop2382" />
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop2384" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2682">
|
||||
<stop
|
||||
style="stop-color:#3977c3;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2684" />
|
||||
<stop
|
||||
style="stop-color:#89aedc;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2686" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2682"
|
||||
id="linearGradient2688"
|
||||
x1="36.713837"
|
||||
y1="31.455952"
|
||||
x2="37.124462"
|
||||
y2="24.842253"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-48.77039,-5.765705)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2690">
|
||||
<stop
|
||||
style="stop-color:#c4d7eb;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2692" />
|
||||
<stop
|
||||
style="stop-color:#c4d7eb;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2694" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2690"
|
||||
id="linearGradient2696"
|
||||
x1="32.647972"
|
||||
y1="30.748846"
|
||||
x2="37.124462"
|
||||
y2="24.842253"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-48.77039,-5.765705)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2871">
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2873" />
|
||||
<stop
|
||||
style="stop-color:#3465a4;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop2875" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2402">
|
||||
<stop
|
||||
style="stop-color:#729fcf;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2404" />
|
||||
<stop
|
||||
style="stop-color:#528ac5;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2406" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2797"
|
||||
id="linearGradient1493"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="5.9649176"
|
||||
y1="26.048164"
|
||||
x2="52.854097"
|
||||
y2="26.048164" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2797">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2799" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2801" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2797"
|
||||
id="linearGradient1491"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="5.9649176"
|
||||
y1="26.048164"
|
||||
x2="52.854097"
|
||||
y2="26.048164" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient7179">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7181" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop7183" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient2316">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2318" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.65979379;"
|
||||
offset="1"
|
||||
id="stop2320" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1322">
|
||||
<stop
|
||||
id="stop1324"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#729fcf" />
|
||||
<stop
|
||||
id="stop1326"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#5187d6;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1322"
|
||||
id="linearGradient4975"
|
||||
x1="34.892849"
|
||||
y1="36.422989"
|
||||
x2="45.918697"
|
||||
y2="48.547989"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(-18.01785,-13.57119)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7179"
|
||||
id="linearGradient7185"
|
||||
x1="13.435029"
|
||||
y1="13.604306"
|
||||
x2="22.374878"
|
||||
y2="23.554308"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7179"
|
||||
id="linearGradient7189"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="13.435029"
|
||||
y1="13.604306"
|
||||
x2="22.374878"
|
||||
y2="23.554308"
|
||||
gradientTransform="matrix(-1.000000,0.000000,0.000000,-1.000000,47.93934,50.02474)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2380"
|
||||
id="linearGradient7180"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="62.513836"
|
||||
y1="36.061237"
|
||||
x2="15.984863"
|
||||
y2="20.60858" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2871"
|
||||
id="linearGradient7182"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="46.834816"
|
||||
y1="45.264122"
|
||||
x2="45.380436"
|
||||
y2="50.939667" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2402"
|
||||
id="linearGradient7184"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="18.935766"
|
||||
y1="23.667896"
|
||||
x2="53.588622"
|
||||
y2="26.649362" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2871"
|
||||
id="linearGradient7186"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="46.834816"
|
||||
y1="45.264122"
|
||||
x2="45.380436"
|
||||
y2="50.939667" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient7916"
|
||||
id="linearGradient7922"
|
||||
x1="16.874998"
|
||||
y1="22.851799"
|
||||
x2="27.900846"
|
||||
y2="34.976799"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="0.10980392"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="-123.27226"
|
||||
inkscape:cy="26.474252"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="818"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="30"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata6436">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Remove</dc:title>
|
||||
<dc:date>2006-01-04</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Andreas Nilsson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://tango-project.org</dc:source>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>remove</rdf:li>
|
||||
<rdf:li>delete</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:#75a1d0;fill-opacity:1.0000000;stroke:#3465a4;stroke-width:1.0000004px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 27.514356,28.359472 L 39.633445,28.475543 L 39.633445,21.480219 L 27.523285,21.480219 L 20.502546,21.462362 L 8.5441705,21.489147 L 8.5084565,28.457686 L 20.511475,28.475543 L 27.514356,28.359472 z "
|
||||
id="text1314"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
style="opacity:0.40860215;fill:url(#linearGradient4975);fill-opacity:1.0000000;stroke:url(#linearGradient7922);stroke-width:1.0000006px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||
d="M 38.579429,27.484113 L 38.588357,22.475309 L 9.5267863,22.493166 L 9.5000003,27.466256 L 38.579429,27.484113 z "
|
||||
id="path7076"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.31182796"
|
||||
d="M 9.0000000,25.000000 C 9.0000000,26.937500 39.125000,24.062500 39.125000,25.000000 L 39.125000,22.000000 L 9.0000000,22.000000 L 9.0000000,25.000000 z "
|
||||
id="path7914"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 13 KiB |
@ -1,5 +1,9 @@
|
||||
<!-- This snippet is used in firefox extension, see Makefile -->
|
||||
<base href="resource://pdf.js/web/" />
|
||||
<script type="application/l10n">
|
||||
<!-- PDFJSSCRIPT_LOCALE_DATA -->
|
||||
</script>
|
||||
<script type="text/javascript" src="l10n.js"></script>
|
||||
<script type="text/javascript" id="PDFJS_SCRIPT_TAG">
|
||||
<!--
|
||||
// pdf.js is inlined here because resource:// urls won't work
|
||||
|
@ -1,4 +1,6 @@
|
||||
<!-- This snippet is used in production, see Makefile -->
|
||||
<link rel="resource" type="application/l10n" href="locale.properties"/>
|
||||
<script type="text/javascript" src="l10n.js"></script>
|
||||
<script type="text/javascript" src="../build/pdf.js"></script>
|
||||
<script type="text/javascript">
|
||||
// This specifies the location of the pdf.js file.
|
||||
|
1045
web/viewer.css
319
web/viewer.html
@ -1,163 +1,182 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Simple pdf.js page viewer</title>
|
||||
<!-- PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION -->
|
||||
<html dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>PDF.js viewer</title>
|
||||
<!-- PDFJSSCRIPT_INCLUDE_FIREFOX_EXTENSION -->
|
||||
|
||||
<link rel="stylesheet" href="viewer.css"/>
|
||||
<link rel="stylesheet" href="viewer.css"/>
|
||||
<link rel="resource" type="application/l10n" href="locale.properties"/><!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
|
||||
<script type="text/javascript" src="compatibility.js"></script> <!-- PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION -->
|
||||
<script type="text/javascript" src="compatibility.js"></script> <!-- PDFJSSCRIPT_REMOVE_FIREFOX_EXTENSION -->
|
||||
<script type="text/javascript" src="../external/webL10n/l10n.js"></script><!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
|
||||
<!-- PDFJSSCRIPT_INCLUDE_BUILD -->
|
||||
<script type="text/javascript" src="../src/core.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/util.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/api.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/metadata.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/canvas.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/obj.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/function.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/charsets.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/cidmaps.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/colorspace.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/crypto.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/evaluator.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/fonts.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/glyphlist.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/image.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/metrics.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/parser.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/pattern.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/stream.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/worker.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../external/jpgjs/jpg.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/jpx.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/bidi.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript">PDFJS.workerSrc = '../src/worker_loader.js';</script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="debugger.js"></script>
|
||||
<script type="text/javascript" src="viewer.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
<!-- PDFJSSCRIPT_INCLUDE_BUILD -->
|
||||
<script type="text/javascript" src="../src/core.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/util.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/api.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/metadata.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/canvas.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/obj.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/function.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/charsets.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/cidmaps.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/colorspace.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/crypto.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/evaluator.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/fonts.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/glyphlist.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/image.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/metrics.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/parser.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/pattern.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/stream.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/worker.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../external/jpgjs/jpg.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/jpx.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="../src/bidi.js"></script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript">PDFJS.workerSrc = '../src/worker_loader.js';</script> <!-- PDFJSSCRIPT_REMOVE_CORE -->
|
||||
<script type="text/javascript" src="debugger.js"></script>
|
||||
<script type="text/javascript" src="viewer.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="controls">
|
||||
<button id="previous" onclick="PDFView.page--;" oncontextmenu="return false;">
|
||||
<img src="images/go-up.svg" align="top" height="16"/>
|
||||
Previous
|
||||
</button>
|
||||
<div id="outerContainer">
|
||||
|
||||
<button id="next" onclick="PDFView.page++;" oncontextmenu="return false;">
|
||||
<img src="images/go-down.svg" align="top" height="16"/>
|
||||
Next
|
||||
</button>
|
||||
|
||||
<div class="separator"></div>
|
||||
|
||||
<input type="number" id="pageNumber" onchange="PDFView.page = this.value;" value="1" size="4" min="1" />
|
||||
|
||||
<span>/</span>
|
||||
<span id="numPages">--</span>
|
||||
|
||||
<div class="separator"></div>
|
||||
|
||||
<button id="zoomOut" title="Zoom Out" onclick="PDFView.zoomOut();" oncontextmenu="return false;">
|
||||
<img src="images/zoom-out.svg" align="top" height="16"/>
|
||||
</button>
|
||||
<button id="zoomIn" title="Zoom In" onclick="PDFView.zoomIn();" oncontextmenu="return false;">
|
||||
<img src="images/zoom-in.svg" align="top" height="16"/>
|
||||
</button>
|
||||
|
||||
<div class="separator"></div>
|
||||
|
||||
<select id="scaleSelect" onchange="PDFView.parseScale(this.value);" oncontextmenu="return false;">
|
||||
<option id="customScaleOption" value="custom"></option>
|
||||
<option value="0.5">50%</option>
|
||||
<option value="0.75">75%</option>
|
||||
<option value="1">100%</option>
|
||||
<option value="1.25">125%</option>
|
||||
<option value="1.5">150%</option>
|
||||
<option value="2">200%</option>
|
||||
<option id="pageWidthOption" value="page-width">Page Width</option>
|
||||
<option id="pageFitOption" value="page-fit">Page Fit</option>
|
||||
<option id="pageAutoOption" value="auto" selected="selected">Auto</option>
|
||||
</select>
|
||||
|
||||
<div class="separator"></div>
|
||||
|
||||
<button id="print" onclick="window.print();" oncontextmenu="return false;">
|
||||
<img src="images/document-print.svg" align="top" height="16"/>
|
||||
Print
|
||||
</button>
|
||||
|
||||
<button id="download" title="Download" onclick="PDFView.download();" oncontextmenu="return false;">
|
||||
<img src="images/download.svg" align="top" height="16"/>
|
||||
Download
|
||||
</button>
|
||||
|
||||
<div class="separator"></div>
|
||||
|
||||
<input id="fileInput" type="file" oncontextmenu="return false;"/>
|
||||
|
||||
<div id="fileInputSeperator" class="separator"></div>
|
||||
|
||||
<a href="#" id="viewBookmark" title="Bookmark (or copy) current location">
|
||||
<img src="images/bookmark.svg" alt="Bookmark" align="top" height="16"/>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div id="errorWrapper" hidden='true'>
|
||||
<div id="errorMessageLeft">
|
||||
<span id="errorMessage"></span>
|
||||
<button id="errorShowMore" onclick="" oncontextmenu="return false;">
|
||||
More Information
|
||||
</button>
|
||||
<button id="errorShowLess" onclick="" oncontextmenu="return false;" hidden='true'>
|
||||
Less Information
|
||||
</button>
|
||||
</div>
|
||||
<div id="errorMessageRight">
|
||||
<button id="errorClose" oncontextmenu="return false;">
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
<div class="clearBoth"></div>
|
||||
<textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
|
||||
</div>
|
||||
|
||||
<div id="sidebar">
|
||||
<div id="sidebarBox">
|
||||
<div id="pinIcon" onClick="PDFView.pinSidebar()"></div>
|
||||
<div id="sidebarScrollView">
|
||||
<div id="sidebarView"></div>
|
||||
<div id="sidebarContainer">
|
||||
<div id="toolbarSidebar">
|
||||
<button id="viewThumbnail" class="toolbarButton group toggled" title="Show Thumbnails" onclick="PDFView.switchSidebarView('thumbs')" tabindex="1" data-l10n-id="thumbs">
|
||||
<span data-l10n-id="thumbs_label">Thumbnails</span>
|
||||
</button>
|
||||
<button id="viewOutline" class="toolbarButton group" title="Show Document Outline" onclick="PDFView.switchSidebarView('outline')" tabindex="2" data-l10n-id="outline">
|
||||
<span data-l10n-id="outline_label">Document Outline</span>
|
||||
</button>
|
||||
<button id="viewSearch" class="toolbarButton group" title="Search Document" onclick="PDFView.switchSidebarView('search')" tabindex="3" data-l10n-id="search">
|
||||
<span data-l10n-id="search_label">Search Document</span>
|
||||
</button>
|
||||
</div>
|
||||
<div id="outlineScrollView" hidden='true'>
|
||||
<div id="outlineView"></div>
|
||||
</div>
|
||||
<div id="searchScrollView" hidden='true'>
|
||||
<div id="searchToolbar">
|
||||
<input id="searchTermsInput" onkeydown='if (event.keyCode == 13) PDFView.search()'>
|
||||
<button id="searchButton" onclick='PDFView.search()'>Find</button>
|
||||
<div id="sidebarContent">
|
||||
<div id="thumbnailView">
|
||||
</div>
|
||||
<div id="outlineView" class="hidden">
|
||||
</div>
|
||||
<div id="searchView" class="hidden">
|
||||
<div id="searchToolbar">
|
||||
<input id="searchTermsInput" onkeydown='if (event.keyCode == 13) PDFView.search()'>
|
||||
<button id="searchButton" onclick='PDFView.search()'>Find</button>
|
||||
</div>
|
||||
<div id="searchResults"></div>
|
||||
</div>
|
||||
<div id="searchResults"></div>
|
||||
</div>
|
||||
<div id="sidebarControls">
|
||||
<button id="thumbsSwitch" title="Show Thumbnails" onclick="PDFView.switchSidebarView('thumbs')" data-selected>
|
||||
<img src="images/nav-thumbs.svg" align="top" height="16" alt="Thumbs" />
|
||||
</button>
|
||||
<button id="outlineSwitch" title="Show Document Outline" onclick="PDFView.switchSidebarView('outline')" disabled>
|
||||
<img src="images/nav-outline.svg" align="top" height="16" alt="Document Outline" />
|
||||
</button>
|
||||
<button id="searchSwitch" title="Show Search" onclick="PDFView.switchSidebarView('search')">
|
||||
<img src="images/edit-find.svg" align="top" height="16" alt="Search Document" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> <!-- sidebarContainer -->
|
||||
|
||||
<div id="loadingBox">
|
||||
<div id="loading">Loading... 0%</div>
|
||||
<div id="loadingBar"><div class="progress"></div></div>
|
||||
</div>
|
||||
<div id="viewer"></div>
|
||||
<div id="mainContainer">
|
||||
<div class="toolbar">
|
||||
<div id="toolbarContainer">
|
||||
|
||||
<div id="toolbarViewer">
|
||||
<div id="toolbarViewerLeft">
|
||||
<button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="3" data-l10n-id="toggle_slider">
|
||||
<span data-l10n-id="toggle_slider_label">Toggle Sidebar</span>
|
||||
</button>
|
||||
<div class="toolbarButtonSpacer"></div>
|
||||
<div class="splitToolbarButton">
|
||||
<button class="toolbarButton pageUp" title="Previous Page" onclick="PDFView.page--" id="previous" tabindex="4" data-l10n-id="previous">
|
||||
<span data-l10n-id="previous_label">Previous</span>
|
||||
</button>
|
||||
<div class="splitToolbarButtonSeparator"></div>
|
||||
<button class="toolbarButton pageDown" title="Next Page" onclick="PDFView.page++" id="next" tabindex="5" data-l10n-id="next">
|
||||
<span data-l10n-id="next_label">Next</span>
|
||||
</button>
|
||||
</div>
|
||||
<label class="toolbarLabel" for="pageNumber" data-l10n-id="page_label">Page: </label>
|
||||
<input type="number" id="pageNumber" class="toolbarField pageNumber" onchange="PDFView.page = this.value;" value="1" size="4" min="1" tabindex="6">
|
||||
</input>
|
||||
<span id="numPages" class="toolbarLabel"></span>
|
||||
</div>
|
||||
<div id="toolbarViewerRight">
|
||||
<input id="fileInput" class="fileInput" type="file" oncontextmenu="return false;" tabindex="10" />
|
||||
|
||||
<!--
|
||||
<input id="fileInput" class="fileInput" type="file" oncontextmenu="return false;" style="visibility: hidden; position: fixed; right: 0; top: 0" />
|
||||
<button id="openFile" class="toolbarButton print" title="Open File" tabindex="10" data-l10n-id="open_file" onclick="document.getElementById('fileInput').click()">
|
||||
<span data-l10n-id="open_file_label">Open</span>
|
||||
</button>
|
||||
-->
|
||||
|
||||
<!--
|
||||
<button id="print" class="toolbarButton print" title="Print" tabindex="11" data-l10n-id="print" onclick="window.print()">
|
||||
<span data-l10n-id="print_label">Print</span>
|
||||
</button>
|
||||
-->
|
||||
|
||||
<button id="download" class="toolbarButton download" title="Download" onclick="PDFView.download();" tabindex="12" data-l10n-id="download">
|
||||
<span data-l10n-id="download_label">Download</span>
|
||||
</button>
|
||||
<!-- <div class="toolbarButtonSpacer"></div> -->
|
||||
<a href="#" id="viewBookmark" class="toolbarButton bookmark" title="Current view (copy or open in new window)" tabindex="13" data-l10n-id="bookmark"><span data-l10n-id="bookmark_label">Current View</span></a>
|
||||
</div>
|
||||
<div class="outerCenter">
|
||||
<div class="innerCenter" id="toolbarViewerMiddle">
|
||||
<div class="splitToolbarButton">
|
||||
<button class="toolbarButton zoomOut" title="Zoom Out" onclick="PDFView.zoomOut();" tabindex="7" data-l10n-id="zoom_out">
|
||||
<span data-l10n-id="zoom_out_label">Zoom Out</span>
|
||||
</button>
|
||||
<div class="splitToolbarButtonSeparator"></div>
|
||||
<button class="toolbarButton zoomIn" title="Zoom In" onclick="PDFView.zoomIn();" tabindex="8" data-l10n-id="zoom_in">
|
||||
<span data-l10n-id="zoom_in_label">Zoom In</span>
|
||||
</button>
|
||||
</div>
|
||||
<span class="dropdownToolbarButton">
|
||||
<select id="scaleSelect" onchange="PDFView.parseScale(this.value);" title="Zoom" oncontextmenu="return false;" tabindex="9" data-l10n-id="zoom">
|
||||
<option id="pageAutoOption" value="auto" selected="selected" data-l10n-id="page_scale_auto">Automatic Zoom</option>
|
||||
<option id="pageActualOption" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
|
||||
<option id="pageFitOption" value="page-fit" data-l10n-id="page_scale_fit">Fit Page</option>
|
||||
<option id="pageWidthOption" value="page-width" data-l10n-id="page_scale_width">Full Width</option>
|
||||
<option id="customScaleOption" value="custom"></option>
|
||||
<option value="0.5">50%</option>
|
||||
<option value="0.75">75%</option>
|
||||
<option value="1">100%</option>
|
||||
<option value="1.25">125%</option>
|
||||
<option value="1.5">150%</option>
|
||||
<option value="2">200%</option>
|
||||
</select>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="viewerContainer">
|
||||
<div id="viewer"></div>
|
||||
</div>
|
||||
|
||||
<div id="loadingBox">
|
||||
<div id="loading" data-l10n-id="loading" data-l10n-args='{"percent": 0}'>Loading... 0%</div>
|
||||
<div id="loadingBar"><div class="progress"></div></div>
|
||||
</div>
|
||||
|
||||
<div id="errorWrapper" hidden='true'>
|
||||
<div id="errorMessageLeft">
|
||||
<span id="errorMessage"></span>
|
||||
<button id="errorShowMore" onclick="" oncontextmenu="return false;" data-l10n-id="error_more_info">
|
||||
More Information
|
||||
</button>
|
||||
<button id="errorShowLess" onclick="" oncontextmenu="return false;" data-l10n-id="error_less_info" hidden='true'>
|
||||
Less Information
|
||||
</button>
|
||||
</div>
|
||||
<div id="errorMessageRight">
|
||||
<button id="errorClose" oncontextmenu="return false;" data-l10n-id="error_close">
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
<div class="clearBoth"></div>
|
||||
<textarea id="errorMoreInfo" hidden='true' readonly="readonly"></textarea>
|
||||
</div>
|
||||
</div> <!-- mainContainer -->
|
||||
|
||||
</div> <!-- outerContainer -->
|
||||
</body>
|
||||
</html>
|
||||
|
329
web/viewer.js
@ -15,6 +15,8 @@ var kMaxScale = 4.0;
|
||||
var kImageDirectory = './images/';
|
||||
var kSettingsMemory = 20;
|
||||
|
||||
var mozL10n = document.mozL10n || document.webL10n;
|
||||
|
||||
function getFileName(url) {
|
||||
var anchor = url.indexOf('#');
|
||||
var query = url.indexOf('?');
|
||||
@ -62,6 +64,9 @@ var ProgressBar = (function ProgressBarClosure() {
|
||||
updateBar: function ProgressBar_updateBar() {
|
||||
var progressSize = this.width * this._percent / 100;
|
||||
|
||||
if (this._percent > 95)
|
||||
this.div.classList.add('full');
|
||||
|
||||
this.div.style.width = progressSize + this.units;
|
||||
},
|
||||
|
||||
@ -216,6 +221,13 @@ var PDFView = {
|
||||
initialBookmark: document.location.hash.substring(1),
|
||||
startedTextExtraction: false,
|
||||
pageText: [],
|
||||
container: null,
|
||||
initialized: false,
|
||||
// called once when the document is loaded
|
||||
initialize: function pdfViewInitialize() {
|
||||
this.container = document.getElementById('viewerContainer');
|
||||
this.initialized = true;
|
||||
},
|
||||
|
||||
setScale: function pdfViewSetScale(val, resetAutoSettings) {
|
||||
if (val == this.currentScale)
|
||||
@ -247,32 +259,43 @@ var PDFView = {
|
||||
return;
|
||||
}
|
||||
|
||||
var container = this.container;
|
||||
var currentPage = this.pages[this.page - 1];
|
||||
var pageWidthScale = (window.innerWidth - kScrollbarPadding) /
|
||||
var pageWidthScale = (container.clientWidth - kScrollbarPadding) /
|
||||
currentPage.width * currentPage.scale / kCssUnits;
|
||||
var pageHeightScale = (window.innerHeight - kScrollbarPadding) /
|
||||
var pageHeightScale = (container.clientHeight - kScrollbarPadding) /
|
||||
currentPage.height * currentPage.scale / kCssUnits;
|
||||
if ('page-width' == value)
|
||||
this.setScale(pageWidthScale, resetAutoSettings);
|
||||
if ('page-height' == value)
|
||||
this.setScale(pageHeightScale, resetAutoSettings);
|
||||
if ('page-fit' == value) {
|
||||
this.setScale(
|
||||
Math.min(pageWidthScale, pageHeightScale), resetAutoSettings);
|
||||
switch (value) {
|
||||
case 'page-actual':
|
||||
this.setScale(1, resetAutoSettings);
|
||||
break;
|
||||
case 'page-width':
|
||||
this.setScale(pageWidthScale, resetAutoSettings);
|
||||
break;
|
||||
case 'page-height':
|
||||
this.setScale(pageHeightScale, resetAutoSettings);
|
||||
break;
|
||||
case 'page-fit':
|
||||
this.setScale(
|
||||
Math.min(pageWidthScale, pageHeightScale), resetAutoSettings);
|
||||
break;
|
||||
case 'auto':
|
||||
this.setScale(Math.min(1.0, pageWidthScale), resetAutoSettings);
|
||||
break;
|
||||
}
|
||||
if ('auto' == value)
|
||||
this.setScale(Math.min(1.0, pageWidthScale), resetAutoSettings);
|
||||
|
||||
selectScaleOption(value);
|
||||
},
|
||||
|
||||
zoomIn: function pdfViewZoomIn() {
|
||||
var newScale = Math.min(kMaxScale, this.currentScale * kDefaultScaleDelta);
|
||||
var newScale = (this.currentScale * kDefaultScaleDelta).toFixed(2);
|
||||
newScale = Math.min(kMaxScale, newScale);
|
||||
this.parseScale(newScale, true);
|
||||
},
|
||||
|
||||
zoomOut: function pdfViewZoomOut() {
|
||||
var newScale = Math.max(kMinScale, this.currentScale / kDefaultScaleDelta);
|
||||
var newScale = (this.currentScale / kDefaultScaleDelta).toFixed(2);
|
||||
newScale = Math.max(kMinScale, newScale);
|
||||
this.parseScale(newScale, true);
|
||||
},
|
||||
|
||||
@ -328,11 +351,13 @@ var PDFView = {
|
||||
},
|
||||
function getDocumentError(message, exception) {
|
||||
var loadingIndicator = document.getElementById('loading');
|
||||
loadingIndicator.textContent = 'Error';
|
||||
loadingIndicator.textContent = mozL10n.get('loading_error_indicator',
|
||||
null, 'Error');
|
||||
var moreInfo = {
|
||||
message: message
|
||||
};
|
||||
self.error('An error occurred while loading the PDF.', moreInfo);
|
||||
self.error(mozL10n.get('loading_error', null,
|
||||
'An error occurred while loading the PDF.'), moreInfo);
|
||||
self.loading = false;
|
||||
},
|
||||
function getDocumentProgress(progressData) {
|
||||
@ -439,17 +464,29 @@ var PDFView = {
|
||||
};
|
||||
moreInfoButton.removeAttribute('hidden');
|
||||
lessInfoButton.setAttribute('hidden', 'true');
|
||||
errorMoreInfo.value = 'PDF.JS Build: ' + PDFJS.build + '\n';
|
||||
errorMoreInfo.value =
|
||||
mozL10n.get('error_build', {build: PDFJS.build},
|
||||
'PDF.JS Build: {{build}}') + '\n';
|
||||
|
||||
if (moreInfo) {
|
||||
errorMoreInfo.value += 'Message: ' + moreInfo.message;
|
||||
errorMoreInfo.value +=
|
||||
mozL10n.get('error_message', {message: moreInfo.message},
|
||||
'Message: {{message}}');
|
||||
if (moreInfo.stack) {
|
||||
errorMoreInfo.value += '\n' + 'Stack: ' + moreInfo.stack;
|
||||
errorMoreInfo.value += '\n' +
|
||||
mozL10n.get('error_stack', {stack: moreInfo.stack},
|
||||
'Stack: {{stack}}');
|
||||
} else {
|
||||
if (moreInfo.filename)
|
||||
errorMoreInfo.value += '\n' + 'File: ' + moreInfo.filename;
|
||||
if (moreInfo.lineNumber)
|
||||
errorMoreInfo.value += '\n' + 'Line: ' + moreInfo.lineNumber;
|
||||
if (moreInfo.filename) {
|
||||
errorMoreInfo.value += '\n' +
|
||||
mozL10n.get('error_file', {file: moreInfo.filename},
|
||||
'File: {{file}}');
|
||||
}
|
||||
if (moreInfo.lineNumber) {
|
||||
errorMoreInfo.value += '\n' +
|
||||
mozL10n.get('error_line', {line: moreInfo.lineNumber},
|
||||
'Line: {{line}}');
|
||||
}
|
||||
}
|
||||
}
|
||||
errorMoreInfo.rows = errorMoreInfo.value.split('\n').length - 1;
|
||||
@ -458,7 +495,8 @@ var PDFView = {
|
||||
progress: function pdfViewProgress(level) {
|
||||
var percent = Math.round(level * 100);
|
||||
var loadingIndicator = document.getElementById('loading');
|
||||
loadingIndicator.textContent = 'Loading... ' + percent + '%';
|
||||
loadingIndicator.textContent = mozL10n.get('loading', {percent: percent},
|
||||
'Loading... {{percent}}%');
|
||||
|
||||
PDFView.loadingBar.percent = percent;
|
||||
},
|
||||
@ -478,14 +516,14 @@ var PDFView = {
|
||||
var loadingBox = document.getElementById('loadingBox');
|
||||
loadingBox.setAttribute('hidden', 'true');
|
||||
|
||||
var sidebar = document.getElementById('sidebarView');
|
||||
sidebar.parentNode.scrollTop = 0;
|
||||
var thumbsView = document.getElementById('thumbnailView');
|
||||
thumbsView.parentNode.scrollTop = 0;
|
||||
|
||||
while (sidebar.hasChildNodes())
|
||||
sidebar.removeChild(sidebar.lastChild);
|
||||
while (thumbsView.hasChildNodes())
|
||||
thumbsView.removeChild(thumbsView.lastChild);
|
||||
|
||||
if ('_loadingInterval' in sidebar)
|
||||
clearInterval(sidebar._loadingInterval);
|
||||
if ('_loadingInterval' in thumbsView)
|
||||
clearInterval(thumbsView._loadingInterval);
|
||||
|
||||
var container = document.getElementById('viewer');
|
||||
while (container.hasChildNodes())
|
||||
@ -494,7 +532,8 @@ var PDFView = {
|
||||
var pagesCount = pdfDocument.numPages;
|
||||
var id = pdfDocument.fingerprint;
|
||||
var storedHash = null;
|
||||
document.getElementById('numPages').textContent = pagesCount;
|
||||
document.getElementById('numPages').textContent =
|
||||
mozL10n.get('page_of', {pageCount: pagesCount}, 'of {{pageCount}}');
|
||||
document.getElementById('pageNumber').max = pagesCount;
|
||||
PDFView.documentFingerprint = id;
|
||||
var store = PDFView.store = new Settings(id);
|
||||
@ -522,7 +561,7 @@ var PDFView = {
|
||||
var page = promisedPages[i - 1];
|
||||
var pageView = new PageView(container, page, i, scale,
|
||||
page.stats, self.navigateTo.bind(self));
|
||||
var thumbnailView = new ThumbnailView(sidebar, page, i);
|
||||
var thumbnailView = new ThumbnailView(thumbsView, page, i);
|
||||
bindOnAfterDraw(pageView, thumbnailView);
|
||||
|
||||
pages.push(pageView);
|
||||
@ -542,13 +581,7 @@ var PDFView = {
|
||||
// outline and initial view depends on destinations and pagesRefMap
|
||||
PDFJS.Promise.all([pagesPromise, destinationsPromise]).then(function() {
|
||||
pdfDocument.getOutline().then(function(outline) {
|
||||
if (!outline)
|
||||
return;
|
||||
|
||||
self.outline = new DocumentOutlineView(outline);
|
||||
var outlineSwitchButton = document.getElementById('outlineSwitch');
|
||||
outlineSwitchButton.removeAttribute('disabled');
|
||||
self.switchSidebarView('outline');
|
||||
});
|
||||
|
||||
self.setInitialView(storedHash, scale);
|
||||
@ -697,40 +730,51 @@ var PDFView = {
|
||||
},
|
||||
|
||||
switchSidebarView: function pdfViewSwitchSidebarView(view) {
|
||||
var thumbsScrollView = document.getElementById('sidebarScrollView');
|
||||
var thumbsSwitchButton = document.getElementById('thumbsSwitch');
|
||||
if (view == 'thumbs') {
|
||||
thumbsScrollView.removeAttribute('hidden');
|
||||
thumbsSwitchButton.setAttribute('data-selected', true);
|
||||
} else {
|
||||
thumbsScrollView.setAttribute('hidden', 'true');
|
||||
thumbsSwitchButton.removeAttribute('data-selected');
|
||||
}
|
||||
var thumbsView = document.getElementById('thumbnailView');
|
||||
var outlineView = document.getElementById('outlineView');
|
||||
var searchView = document.getElementById('searchView');
|
||||
|
||||
var thumbsButton = document.getElementById('viewThumbnail');
|
||||
var outlineButton = document.getElementById('viewOutline');
|
||||
var searchButton = document.getElementById('viewSearch');
|
||||
|
||||
var outlineScrollView = document.getElementById('outlineScrollView');
|
||||
var outlineSwitchButton = document.getElementById('outlineSwitch');
|
||||
if (view == 'outline') {
|
||||
outlineScrollView.removeAttribute('hidden');
|
||||
outlineSwitchButton.setAttribute('data-selected', true);
|
||||
} else {
|
||||
outlineScrollView.setAttribute('hidden', 'true');
|
||||
outlineSwitchButton.removeAttribute('data-selected');
|
||||
}
|
||||
switch (view) {
|
||||
case 'thumbs':
|
||||
thumbsButton.classList.add('toggled');
|
||||
outlineButton.classList.remove('toggled');
|
||||
searchButton.classList.remove('toggled');
|
||||
thumbsView.classList.remove('hidden');
|
||||
outlineView.classList.add('hidden');
|
||||
searchView.classList.add('hidden');
|
||||
|
||||
var searchScrollView = document.getElementById('searchScrollView');
|
||||
var searchSwitchButton = document.getElementById('searchSwitch');
|
||||
if (view == 'search') {
|
||||
searchScrollView.removeAttribute('hidden');
|
||||
searchSwitchButton.setAttribute('data-selected', true);
|
||||
updateThumbViewArea();
|
||||
break;
|
||||
|
||||
var searchTermsInput = document.getElementById('searchTermsInput');
|
||||
searchTermsInput.focus();
|
||||
case 'outline':
|
||||
thumbsButton.classList.remove('toggled');
|
||||
outlineButton.classList.add('toggled');
|
||||
searchButton.classList.remove('toggled');
|
||||
thumbsView.classList.add('hidden');
|
||||
outlineView.classList.remove('hidden');
|
||||
searchView.classList.add('hidden');
|
||||
|
||||
// Start text extraction as soon as the search gets displayed.
|
||||
this.extractText();
|
||||
} else {
|
||||
searchScrollView.setAttribute('hidden', 'true');
|
||||
searchSwitchButton.removeAttribute('data-selected');
|
||||
if (outlineButton.getAttribute('disabled'))
|
||||
return;
|
||||
break;
|
||||
|
||||
case 'search':
|
||||
thumbsButton.classList.remove('toggled');
|
||||
outlineButton.classList.remove('toggled');
|
||||
searchButton.classList.add('toggled');
|
||||
thumbsView.classList.add('hidden');
|
||||
outlineView.classList.add('hidden');
|
||||
searchView.classList.remove('hidden');
|
||||
|
||||
var searchTermsInput = document.getElementById('searchTermsInput');
|
||||
searchTermsInput.focus();
|
||||
// Start text extraction as soon as the search gets displayed.
|
||||
this.extractText();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
@ -752,43 +796,45 @@ var PDFView = {
|
||||
extractPageText(0);
|
||||
},
|
||||
|
||||
pinSidebar: function pdfViewPinSidebar() {
|
||||
document.getElementById('sidebar').classList.toggle('pinned');
|
||||
},
|
||||
|
||||
getVisiblePages: function pdfViewGetVisiblePages() {
|
||||
var pages = this.pages;
|
||||
var kBottomMargin = 10;
|
||||
var kTopPadding = 30;
|
||||
var visiblePages = [];
|
||||
|
||||
var currentHeight = kBottomMargin;
|
||||
var windowTop = window.pageYOffset;
|
||||
var currentHeight = kTopPadding + kBottomMargin;
|
||||
var container = this.container;
|
||||
// Add 1px to the scrolltop to give a little wiggle room if the math is off,
|
||||
// this won't be needed if we calc current page number based off the middle
|
||||
// of the screen instead of the top.
|
||||
var containerTop = container.scrollTop + 1;
|
||||
for (var i = 1; i <= pages.length; ++i) {
|
||||
var page = pages[i - 1];
|
||||
var pageHeight = page.height + kBottomMargin;
|
||||
if (currentHeight + pageHeight > windowTop)
|
||||
if (currentHeight + pageHeight > containerTop)
|
||||
break;
|
||||
|
||||
currentHeight += pageHeight;
|
||||
}
|
||||
|
||||
var windowBottom = window.pageYOffset + window.innerHeight;
|
||||
for (; i <= pages.length && currentHeight < windowBottom; ++i) {
|
||||
var containerBottom = containerTop + container.clientHeight;
|
||||
for (; i <= pages.length && currentHeight < containerBottom; ++i) {
|
||||
var singlePage = pages[i - 1];
|
||||
visiblePages.push({ id: singlePage.id, y: currentHeight,
|
||||
view: singlePage });
|
||||
currentHeight += singlePage.height * singlePage.scale + kBottomMargin;
|
||||
currentHeight += page.height + kBottomMargin;
|
||||
}
|
||||
return visiblePages;
|
||||
},
|
||||
|
||||
getVisibleThumbs: function pdfViewGetVisibleThumbs() {
|
||||
var thumbs = this.thumbnails;
|
||||
var kBottomMargin = 5;
|
||||
var kBottomMargin = 15;
|
||||
var visibleThumbs = [];
|
||||
|
||||
var view = document.getElementById('sidebarScrollView');
|
||||
var view = document.getElementById('thumbnailView');
|
||||
var currentHeight = kBottomMargin;
|
||||
|
||||
var top = view.scrollTop;
|
||||
for (var i = 1; i <= thumbs.length; ++i) {
|
||||
var thumb = thumbs[i - 1];
|
||||
@ -907,8 +953,9 @@ var PageView = function pageView(container, pdfPage, id, scale,
|
||||
var type = item.type;
|
||||
var rect = viewport.convertToViewportRectangle(item.rect);
|
||||
rect = PDFJS.Util.normalizeRect(rect);
|
||||
image.src = kImageDirectory + type.toLowerCase() + '.svg';
|
||||
image.alt = '[' + type + ' Annotation]';
|
||||
image.src = kImageDirectory + 'annotation-' + type.toLowerCase() + '.svg';
|
||||
image.alt = mozL10n.get('text_annotation_type', {type: type},
|
||||
'[{{type}} Annotation]');
|
||||
var content = document.createElement('div');
|
||||
content.setAttribute('hidden', true);
|
||||
var title = document.createElement('h1');
|
||||
@ -1005,9 +1052,9 @@ var PageView = function pageView(container, pdfPage, id, scale,
|
||||
y = dest[3];
|
||||
width = dest[4] - x;
|
||||
height = dest[5] - y;
|
||||
widthScale = (window.innerWidth - kScrollbarPadding) /
|
||||
widthScale = (this.container.clientWidth - kScrollbarPadding) /
|
||||
width / kCssUnits;
|
||||
heightScale = (window.innerHeight - kScrollbarPadding) /
|
||||
heightScale = (this.container.clientHeight - kScrollbarPadding) /
|
||||
height / kCssUnits;
|
||||
scale = Math.min(widthScale, heightScale);
|
||||
break;
|
||||
@ -1015,16 +1062,15 @@ var PageView = function pageView(container, pdfPage, id, scale,
|
||||
return;
|
||||
}
|
||||
|
||||
var boundingRect = [
|
||||
this.viewport.convertToViewportPoint(x, y),
|
||||
this.viewport.convertToViewportPoint(x + width, y + height)
|
||||
];
|
||||
|
||||
if (scale && scale !== PDFView.currentScale)
|
||||
PDFView.parseScale(scale, true);
|
||||
else if (PDFView.currentScale === kUnknownScale)
|
||||
PDFView.parseScale(kDefaultScale, true);
|
||||
|
||||
var boundingRect = [
|
||||
this.viewport.convertToViewportPoint(x, y),
|
||||
this.viewport.convertToViewportPoint(x + width, y + height)
|
||||
];
|
||||
setTimeout(function pageViewScrollIntoViewRelayout() {
|
||||
// letting page to re-layout before scrolling
|
||||
var scale = PDFView.currentScale;
|
||||
@ -1090,8 +1136,10 @@ var PageView = function pageView(container, pdfPage, id, scale,
|
||||
delete self.loadingIconDiv;
|
||||
}
|
||||
|
||||
if (error)
|
||||
PDFView.error('An error occurred while rendering the page.', error);
|
||||
if (error) {
|
||||
PDFView.error(mozL10n.get('rendering_error', null,
|
||||
'An error occurred while rendering the page.'), error);
|
||||
}
|
||||
|
||||
self.stats = pdfPage.stats;
|
||||
self.updateStats();
|
||||
@ -1137,16 +1185,13 @@ var ThumbnailView = function thumbnailView(container, pdfPage, id) {
|
||||
};
|
||||
|
||||
var viewport = pdfPage.getViewport(1);
|
||||
var pageWidth = viewport.width;
|
||||
var pageHeight = viewport.height;
|
||||
var pageWidth = this.width = viewport.width;
|
||||
var pageHeight = this.height = viewport.height;
|
||||
var pageRatio = pageWidth / pageHeight;
|
||||
this.id = id;
|
||||
|
||||
var maxThumbSize = 134;
|
||||
var canvasWidth = this.width = pageRatio >= 1 ? maxThumbSize :
|
||||
maxThumbSize * pageRatio;
|
||||
var canvasHeight = this.height = pageRatio <= 1 ? maxThumbSize :
|
||||
maxThumbSize / pageRatio;
|
||||
var canvasWidth = 98;
|
||||
var canvasHeight = canvasWidth / this.width * this.height;
|
||||
var scaleX = this.scaleX = (canvasWidth / pageWidth);
|
||||
var scaleY = this.scaleY = (canvasHeight / pageHeight);
|
||||
|
||||
@ -1166,9 +1211,14 @@ var ThumbnailView = function thumbnailView(container, pdfPage, id) {
|
||||
|
||||
canvas.width = canvasWidth;
|
||||
canvas.height = canvasHeight;
|
||||
canvas.className = 'thumbnailImage';
|
||||
|
||||
div.setAttribute('data-loaded', true);
|
||||
div.appendChild(canvas);
|
||||
|
||||
var ring = document.createElement('div');
|
||||
ring.className = 'thumbnailSelectionRing';
|
||||
ring.appendChild(canvas);
|
||||
div.appendChild(ring);
|
||||
|
||||
var ctx = canvas.getContext('2d');
|
||||
ctx.save();
|
||||
@ -1219,6 +1269,8 @@ var ThumbnailView = function thumbnailView(container, pdfPage, id) {
|
||||
|
||||
var DocumentOutlineView = function documentOutlineView(outline) {
|
||||
var outlineView = document.getElementById('outlineView');
|
||||
while (outlineView.firstChild)
|
||||
outlineView.removeChild(outlineView.firstChild);
|
||||
|
||||
function bindItemLink(domObj, item) {
|
||||
domObj.href = PDFView.getDestinationHash(item.dest);
|
||||
@ -1228,6 +1280,15 @@ var DocumentOutlineView = function documentOutlineView(outline) {
|
||||
};
|
||||
}
|
||||
|
||||
if (!outline) {
|
||||
var noOutline = document.createElement('div');
|
||||
noOutline.classList.add('noOutline');
|
||||
noOutline.textContent = mozL10n.get('no_outline', null,
|
||||
'No Outline Available');
|
||||
outlineView.appendChild(noOutline);
|
||||
return;
|
||||
}
|
||||
|
||||
var queue = [{parent: outlineView, items: outline}];
|
||||
while (queue.length > 0) {
|
||||
var levelData = queue.shift();
|
||||
@ -1387,6 +1448,7 @@ var TextLayerBuilder = function textLayerBuilder(textLayerDiv) {
|
||||
};
|
||||
|
||||
window.addEventListener('load', function webViewerLoad(evt) {
|
||||
PDFView.initialize();
|
||||
var params = PDFView.parseQueryString(document.location.search.substring(1));
|
||||
|
||||
var file = PDFJS.isFirefoxExtension ?
|
||||
@ -1395,8 +1457,6 @@ window.addEventListener('load', function webViewerLoad(evt) {
|
||||
if (PDFJS.isFirefoxExtension || !window.File || !window.FileReader ||
|
||||
!window.FileList || !window.Blob) {
|
||||
document.getElementById('fileInput').setAttribute('hidden', 'true');
|
||||
document.getElementById('fileInputSeperator')
|
||||
.setAttribute('hidden', 'true');
|
||||
} else {
|
||||
document.getElementById('fileInput').value = null;
|
||||
}
|
||||
@ -1408,6 +1468,12 @@ window.addEventListener('load', function webViewerLoad(evt) {
|
||||
if ('disableWorker' in hashParams)
|
||||
PDFJS.disableWorker = (hashParams['disableWorker'] === 'true');
|
||||
|
||||
var locale = !PDFJS.isFirefoxExtension ? navigator.language :
|
||||
FirefoxCom.request('getLocale', null);
|
||||
if ('locale' in hashParams)
|
||||
locale = hashParams['locale'];
|
||||
mozL10n.language.code = locale;
|
||||
|
||||
if ('disableTextLayer' in hashParams)
|
||||
PDFJS.disableTextLayer = (hashParams['disableTextLayer'] === 'true');
|
||||
|
||||
@ -1420,8 +1486,28 @@ window.addEventListener('load', function webViewerLoad(evt) {
|
||||
PDFBug.init();
|
||||
}
|
||||
|
||||
var sidebarScrollView = document.getElementById('sidebarScrollView');
|
||||
sidebarScrollView.addEventListener('scroll', updateThumbViewArea, true);
|
||||
var thumbsView = document.getElementById('thumbnailView');
|
||||
thumbsView.addEventListener('scroll', updateThumbViewArea, true);
|
||||
|
||||
var mainContainer = document.getElementById('mainContainer');
|
||||
var outerContainer = document.getElementById('outerContainer');
|
||||
mainContainer.addEventListener('transitionend', function(e) {
|
||||
if (e.target == mainContainer) {
|
||||
var event = document.createEvent('UIEvents');
|
||||
event.initUIEvent('resize', false, false, window, 0);
|
||||
window.dispatchEvent(event);
|
||||
outerContainer.classList.remove('sidebarMoving');
|
||||
}
|
||||
}, true);
|
||||
|
||||
document.getElementById('sidebarToggle').addEventListener('click',
|
||||
function() {
|
||||
this.classList.toggle('toggled');
|
||||
outerContainer.classList.add('sidebarMoving');
|
||||
outerContainer.classList.toggle('sidebarOpen');
|
||||
updateThumbViewArea();
|
||||
});
|
||||
|
||||
PDFView.open(file, 0);
|
||||
}, true);
|
||||
|
||||
@ -1449,6 +1535,8 @@ function preDraw() {
|
||||
}
|
||||
|
||||
function updateViewarea() {
|
||||
if (!PDFView.initialized)
|
||||
return;
|
||||
var visiblePages = PDFView.getVisiblePages();
|
||||
var pageToDraw;
|
||||
for (var i = 0; i < visiblePages.length; i++) {
|
||||
@ -1479,13 +1567,12 @@ function updateViewarea() {
|
||||
var normalizedScaleValue = currentScaleValue == currentScale ?
|
||||
currentScale * 100 : currentScaleValue;
|
||||
|
||||
var kViewerTopMargin = 52;
|
||||
var pageNumber = firstPage.id;
|
||||
var pdfOpenParams = '#page=' + pageNumber;
|
||||
pdfOpenParams += '&zoom=' + normalizedScaleValue;
|
||||
var currentPage = PDFView.pages[pageNumber - 1];
|
||||
var topLeft = currentPage.getPagePoint(window.pageXOffset,
|
||||
window.pageYOffset - firstPage.y - kViewerTopMargin);
|
||||
var topLeft = currentPage.getPagePoint(PDFView.container.scrollLeft,
|
||||
(PDFView.container.scrollTop - firstPage.y));
|
||||
pdfOpenParams += ',' + Math.round(topLeft[0]) + ',' + Math.round(topLeft[1]);
|
||||
|
||||
var store = PDFView.store;
|
||||
@ -1521,13 +1608,11 @@ function updateThumbViewArea() {
|
||||
}, delay);
|
||||
}
|
||||
|
||||
window.addEventListener('transitionend', updateThumbViewArea, true);
|
||||
window.addEventListener('webkitTransitionEnd', updateThumbViewArea, true);
|
||||
|
||||
window.addEventListener('resize', function webViewerResize(evt) {
|
||||
if (document.getElementById('pageWidthOption').selected ||
|
||||
if (PDFView.initialized &&
|
||||
(document.getElementById('pageWidthOption').selected ||
|
||||
document.getElementById('pageFitOption').selected ||
|
||||
document.getElementById('pageAutoOption').selected)
|
||||
document.getElementById('pageAutoOption').selected))
|
||||
PDFView.parseScale(document.getElementById('scaleSelect').value);
|
||||
updateViewarea();
|
||||
});
|
||||
@ -1583,6 +1668,10 @@ function selectScaleOption(value) {
|
||||
return predefinedValueFound;
|
||||
}
|
||||
|
||||
window.addEventListener('localized', function localized(evt) {
|
||||
document.getElementsByTagName('html')[0].dir = mozL10n.language.direction;
|
||||
}, true);
|
||||
|
||||
window.addEventListener('scalechange', function scalechange(evt) {
|
||||
var customScaleOption = document.getElementById('customScaleOption');
|
||||
customScaleOption.selected = false;
|
||||
@ -1606,8 +1695,26 @@ window.addEventListener('scalechange', function scalechange(evt) {
|
||||
|
||||
window.addEventListener('pagechange', function pagechange(evt) {
|
||||
var page = evt.pageNumber;
|
||||
if (document.getElementById('pageNumber').value != page)
|
||||
if (document.getElementById('pageNumber').value != page) {
|
||||
document.getElementById('pageNumber').value = page;
|
||||
var selected = document.querySelector('.thumbnail.selected');
|
||||
if (selected)
|
||||
selected.classList.remove('selected');
|
||||
var thumbnail = document.getElementById('thumbnailContainer' + page);
|
||||
thumbnail.classList.add('selected');
|
||||
var visibleThumbs = PDFView.getVisibleThumbs();
|
||||
var numVisibleThumbs = visibleThumbs.length;
|
||||
// If the thumbnail isn't currently visible scroll it into view.
|
||||
if (numVisibleThumbs > 0) {
|
||||
var first = visibleThumbs[0].id;
|
||||
// Account for only one thumbnail being visible.
|
||||
var last = numVisibleThumbs > 1 ?
|
||||
visibleThumbs[numVisibleThumbs - 1].id : first;
|
||||
if (page <= first || page >= last)
|
||||
thumbnail.scrollIntoView();
|
||||
}
|
||||
|
||||
}
|
||||
document.getElementById('previous').disabled = (page <= 1);
|
||||
document.getElementById('next').disabled = (page >= PDFView.pages.length);
|
||||
}, true);
|
||||
|