Writing
This commit is contained in:
parent
57390f4ed5
commit
f0c1f453c9
@ -1,6 +1,6 @@
|
||||
% Performance benchmark
|
||||
|
||||
In this chapter i will explain the approach to improve the performance of a simplification algorithm in a web browser via WebAssembly. The go-to library for this kind of operation is simplifyJS. It is the javascript implementation of the Douglas-Peucker algorithm with optional radial distance preprocessing. The library will be rebuilt in the C programming language and compiled to Webassembly with emscripten. A webpage is built to produce benchmarking insights to compare the two approaches performance wise.
|
||||
In this chapter i will explain the approach to improve the performance of a simplification algorithm in a web browser via WebAssembly. The go-to library for this kind of operation is simplifyJS. It is the javascript implementation of the Douglas-Peucker algorithm with optional radial distance preprocessing. The library will be rebuilt in the C programming language and compiled to Webassembly with emscripten. A web page is built to produce benchmarking insights to compare the two approaches performance wise.
|
||||
|
||||
\subsection{State of the art: simplifyJS}
|
||||
% simplifyJS + turf
|
||||
@ -19,7 +19,7 @@ Interestingly the library expects coordinates to be a list of object with x and
|
||||
label=lst:turf-transformation
|
||||
]{../lib/turf-simplify/index.js}
|
||||
|
||||
Since it is not clear which case is faster, and given how simple the required changes are, two versions of Simplify.js will be tested: the original version, which expects the coordinates to be in array-of-objects form and the altered version, which operates on nested arrays. Listing \ref{lst:diff-simplify.js} shows an extract of the changes performed on the library. Instead of using properties, the coordinate values are accessed by index. Except for the removal of the lisencing header the alterations are restricted to these kind of changes. The full list of changes can be viewed in \path{lib/simplify-js-alternative/simplify.diff}.
|
||||
Since it is not clear which case is faster, and given how simple the required changes are, two versions of Simplify.js will be tested: the original version, which expects the coordinates to be in array-of-objects form and the altered version, which operates on nested arrays. Listing \ref{lst:diff-simplify.js} shows an extract of the changes performed on the library. Instead of using properties, the coordinate values are accessed by index. Except for the removal of the licensing header the alterations are restricted to these kind of changes. The full list of changes can be viewed in \path{lib/simplify-js-alternative/simplify.diff}.
|
||||
|
||||
|
||||
\lstinputlisting[
|
||||
@ -34,7 +34,7 @@ Since it is not clear which case is faster, and given how simple the required ch
|
||||
|
||||
In scope of this thesis a library will be created that implements the same procedure as simplify.JS in C code. It will be made available on the web platform through WebAssembly. In the style of the model library it will be called simplify.WASM. The compiler to use will be emscripten as it is the standard for porting C code to wasm.
|
||||
|
||||
As mentioned the first step is to port simplify.JS to the C programming language. The file \path{/lib/simplify-wasm/simplify.c} shows the attempt. It is kept as close to the Javascript library as possible. This may result in C-untypical coding style but prevents skewed results from unexpected optimizations to the procedure itself. The entrypoint is not the \texttt{main}-function but a function called simplify. This is specified to the compiler as can be seen in \path{/lib/simplify-wasm/Makefile}. Furthermore the functions malloc and free from the standard library are made available for the host environment. Compling the code through emscripten produces a wasm file and the glue code in javascript format. These files are called simplify.wasm and simplify.js respectively. An example usage can be seen in \path{/lib/simplify-wasm/example.html}. Even through the memory access is abstracted in this example the process is still unhandy and far from a drop-in replacement of simplify.JS. Thus in \path{/lib/simplify-wasm/index.js} the a further abstraction to the emscripten emitted code was realised. The exported function \verb simplifyWasm handles module instantiation, memory access and the correct call to the exported wasm code. Finding the correct path to the wasm binary is not always clear however when the code is imported from another location. The proposed solution is to leave the resolving of the code-path to an asset bundler that processes the file in a preprocessing step.
|
||||
As mentioned the first step is to port simplify.JS to the C programming language. The file \path{lib/simplify-wasm/simplify.c} shows the attempt. It is kept as close to the Javascript library as possible. This may result in C-untypical coding style but prevents skewed results from unexpected optimizations to the procedure itself. The entrypoint is not the \texttt{main}-function but a function called simplify. This is specified to the compiler as can be seen in \path{lib/simplify-wasm/Makefile}. Furthermore the functions malloc and free from the standard library are made available for the host environment. Compling the code through emscripten produces a wasm file and the glue code in javascript format. These files are called simplify.wasm and simplify.js respectively. An example usage can be seen in \path{lib/simplify-wasm/example.html}. Even through the memory access is abstracted in this example the process is still unhandy and far from a drop-in replacement of simplify.JS. Thus in \path{lib/simplify-wasm/index.js} the a further abstraction to the emscripten emitted code was realised. The exported function \verb simplifyWasm handles module instantiation, memory access and the correct call to the exported wasm code. Finding the correct path to the wasm binary is not always clear however when the code is imported from another location. The proposed solution is to leave the resolving of the code-path to an asset bundler that processes the file in a preprocessing step.
|
||||
|
||||
\lstinputlisting[
|
||||
float=htpb,
|
||||
@ -71,9 +71,28 @@ caption=The storeCoords function,
|
||||
label=lst:wasm-util-store-coords
|
||||
]{../lib/wasm-util/coordinates.js}
|
||||
|
||||
\todo[inline]{C code: int* simplify}
|
||||
\todo{Check for coords length < 2}
|
||||
|
||||
\todo[inline]{loadResult}
|
||||
Now we dive int C-land. Listing \ref{lst:simplify-wasm-entrypoint} shows the entry point for the C code. This is the function that gets called from Javascript. As expected arrays are represented as pointers with corresponding length. The first block of code (line 2 - 6) is only meant for declaring needed variables. Lines 8 to 12 mark the radial distance preprocessing. The result of this simplification is stored in n auxiliary array named \texttt{resultRdDistance}. In this case points will have to point to the new array and the length is adjusted. Finally the Douglas-Peucker procedure is invoked after reserving enough memory. The auxiliary array can be freed afterwards. The problem now is to return the result pointer and the array length back to the calling code. \todo{Fact check. evtl unsigned}The fact that pointers in emscripten are represented by an integer will be exploited to return a fixed size array of two containing the values. A hacky solution but it works. We can now look back at how the javascript code reads the result.
|
||||
|
||||
\lstinputlisting[
|
||||
float=tbph,
|
||||
language=c,
|
||||
firstline=104, lastline=124,
|
||||
caption=Entrypoint in the C-file,
|
||||
label=lst:simplify-wasm-entrypoint
|
||||
]{../lib/simplify-wasm/simplify.c}
|
||||
|
||||
|
||||
Listing \ref{lst:wasm-util-load-result} shows the code to read the values back from module memory. The result pointer and its length are acquired by dereferencing the \texttt{resultInfo}-array. The buffer to use is the heap for unsigned 32-bit integers. This information can then be used to align the Float64Array-view on the 64-bit heap. Constructing the appropriate coordinate representation by reversing the flattening can be looked up in the same file. It is realised in the \texttt{unflattenCoords} function. At last it is important to actually free the memory reserved for both the result and the result-information. The exported method \texttt{free} is the way to go here.
|
||||
|
||||
\lstinputlisting[
|
||||
float=tbph,
|
||||
language=javascript,
|
||||
firstline=29, lastline=43,
|
||||
caption=Loading coordinates back from module memory,
|
||||
label=lst:wasm-util-load-result
|
||||
]{../lib/wasm-util/coordinates.js}
|
||||
|
||||
|
||||
|
||||
|
@ -1,92 +0,0 @@
|
||||
\relax
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Binary instruction sets on the web platform}{1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Performance as important factor for web applications}{1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Topology simplification for rendering performance}{2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.4}Structure of this thesis}{2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Principles}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Polygon basics}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Topological aspects}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}LineString simplification}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}Positional errors}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}Length errors}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.3}Area Errors}{3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Algorithms}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}n-th point algorithm}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Random-point routine}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Radial distance algorithm}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Perpendicular distance algorithm}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.5}Reumann-Witkam simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.6}Opheim simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.7}Lang simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.8}Douglas-Peucker simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.8.1}with reduction parameter}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.9}Jenks simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.10}Visvalingam-Whyatt simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.11}Zhao-Saalfeld simplification}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.12}Summary}{4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}WebAssembly}{5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Introduction to Webassembly}{5}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{Present WebAssembly}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid1}{19562753}{45539641}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Existing compilers}{5}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{Languages from which to compile}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid2}{19562753}{41259959}
|
||||
\@writefile{tdo}{\contentsline {todo}{emscripten}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid3}{19562753}{39932933}
|
||||
\@writefile{tdo}{\contentsline {todo}{assemblyscript}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid4}{19562753}{38605907}
|
||||
\@writefile{tdo}{\contentsline {todo}{rust}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid5}{19562753}{37318957}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Technical hurdles}{5}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{Managing memory}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid6}{19562753}{33304225}
|
||||
\@writefile{tdo}{\contentsline {todo}{passing arrays}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid7}{19562753}{31981568}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3}Benefits of WebAssembly}{5}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{Get chart and source of js performance}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid8}{19562753}{15921128}
|
||||
\@writefile{tdo}{\contentsline {todo}{Source for V8 performance observation}{5}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid9}{19562753}{14582010}
|
||||
\@writefile{tdo}{\contentsline {todo}{more about av1}{6}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid10}{19562753}{46038744}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Two test cases - performance and integration}{6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Performance}{6}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{source for simplify JS}{6}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid11}{19562753}{27631187}
|
||||
\@writefile{tdo}{\contentsline {todo}{source for turf}{6}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid12}{19562753}{26375444}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Integration}{6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Benchmark}{7}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}State of the art: simplifyJS}{7}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{reference object vs array form}{7}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid13}{9505910}{23172546}
|
||||
\pgfsyspdfmark {pgfid16}{36067891}{23187291}
|
||||
\pgfsyspdfmark {pgfid17}{37916186}{22918594}
|
||||
\newlabel{lst:turf-transformation}{{1}{8}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Turf.js usage of simplify.js}{8}\protected@file@percent }
|
||||
\newlabel{lst:diff-simplify.js}{{2}{8}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Snippet of the difference between the original Simplify.js and alternative}{8}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}The webassembly solution}{8}\protected@file@percent }
|
||||
\newlabel{lst:simplify-wasm}{{5.2}{9}}
|
||||
\newlabel{lst:simplify-wasm-emscripten-module}{{3}{9}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}My Caption}{9}\protected@file@percent }
|
||||
\newlabel{lst:wasm-util-store-coords}{{4}{10}}
|
||||
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}The storeCoords function}{10}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{C code: int* simplify}{10}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid18}{19562753}{26245426}
|
||||
\@writefile{tdo}{\contentsline {todo}{loadResult}{10}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid19}{19562753}{24967837}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}The implementation}{10}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {6}Compiling an existing C++ library for use on the web}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}State of the art: psimpl}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Compiling to webassembly}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1}Introduction to emscripten}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Preserving topology GeoJSON vs TopoJSON}{11}\protected@file@percent }
|
||||
\@writefile{tdo}{\contentsline {todo}{object form vs array form}{11}\protected@file@percent }
|
||||
\pgfsyspdfmark {pgfid20}{19562753}{38119504}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}The implementation}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {7}Results}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Benchmark results}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Comparing the results of different algorithms}{11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {8}Conclusion}{12}\protected@file@percent }
|
658
thesis/main.log
658
thesis/main.log
@ -1,658 +0,0 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex 2019.7.11) 15 JUL 2019 09:56
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**main.tex
|
||||
(./main.tex
|
||||
LaTeX2e <2018-12-01>
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo
|
||||
File: size12.clo 2018/09/03 v1.4i Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count80
|
||||
\c@section=\count81
|
||||
\c@subsection=\count82
|
||||
\c@subsubsection=\count83
|
||||
\c@paragraph=\count84
|
||||
\c@subparagraph=\count85
|
||||
\c@figure=\count86
|
||||
\c@table=\count87
|
||||
\abovecaptionskip=\skip41
|
||||
\belowcaptionskip=\skip42
|
||||
\bibindent=\dimen102
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
|
||||
Package: inputenc 2018/08/11 v1.3c Input encoding file
|
||||
\inpenc@prehook=\toks14
|
||||
\inpenc@posthook=\toks15
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/setspace/setspace.sty
|
||||
Package: setspace 2011/12/19 v6.7a set line spacing
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
Package: geometry 2018/04/16 v5.8 Page Geometry
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks16
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty
|
||||
Package: ifpdf 2018/09/07 v3.3 Provides the ifpdf switch
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty
|
||||
Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
|
||||
Package ifvtex Info: VTeX not detected.
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
|
||||
Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
|
||||
)
|
||||
\Gm@cnth=\count88
|
||||
\Gm@cntv=\count89
|
||||
\c@Gm@tempcnt=\count90
|
||||
\Gm@bindingoffset=\dimen103
|
||||
\Gm@wd@mp=\dimen104
|
||||
\Gm@odd@mp=\dimen105
|
||||
\Gm@even@mp=\dimen106
|
||||
\Gm@layoutwidth=\dimen107
|
||||
\Gm@layoutheight=\dimen108
|
||||
\Gm@layouthoffset=\dimen109
|
||||
\Gm@layoutvoffset=\dimen110
|
||||
\Gm@dimlist=\toks17
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 99.
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen111
|
||||
\Gin@req@width=\dimen112
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/todonotes/todonotes.sty
|
||||
Package: todonotes 2019/01/24 v1.1.2 Todonotes source and documentation.
|
||||
Package: todonotes 2018/11/22
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty
|
||||
Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty
|
||||
Package: xkeyval 2014/12/03 v2.7a package option processing (HA)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex
|
||||
\XKV@toks=\toks18
|
||||
\XKV@tempa@toks=\toks19
|
||||
)
|
||||
\XKV@depth=\count91
|
||||
File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA)
|
||||
))
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
File: color.cfg 2016/01/02 v1.6 sample color configuration
|
||||
)
|
||||
Package xcolor Info: Driver file: pdftex.def on input line 225.
|
||||
Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
|
||||
Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352.
|
||||
Package xcolor Info: Model `RGB' extended on input line 1364.
|
||||
Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
|
||||
Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
|
||||
Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
|
||||
Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
|
||||
Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
|
||||
Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
|
||||
\pgfutil@everybye=\toks20
|
||||
\pgfutil@tempdima=\dimen113
|
||||
\pgfutil@tempdimb=\dimen114
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t
|
||||
ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
|
||||
\pgfutil@abb=\box27
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty
|
||||
Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS)
|
||||
))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex)
|
||||
Package: pgfrcs 2019/02/02 v3.1.1 (3.1.1)
|
||||
))
|
||||
Package: pgf 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
Package: pgfsys 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
\pgfkeys@pathtoks=\toks21
|
||||
\pgfkeys@temptoks=\toks22
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t
|
||||
ex
|
||||
\pgfkeys@tmptoks=\toks23
|
||||
))
|
||||
\pgf@x=\dimen115
|
||||
\pgf@y=\dimen116
|
||||
\pgf@xa=\dimen117
|
||||
\pgf@ya=\dimen118
|
||||
\pgf@xb=\dimen119
|
||||
\pgf@yb=\dimen120
|
||||
\pgf@xc=\dimen121
|
||||
\pgf@yc=\dimen122
|
||||
\w@pgf@writea=\write3
|
||||
\r@pgf@reada=\read1
|
||||
\c@pgf@counta=\count92
|
||||
\c@pgf@countb=\count93
|
||||
\c@pgf@countc=\count94
|
||||
\c@pgf@countd=\count95
|
||||
\t@pgf@toka=\toks24
|
||||
\t@pgf@tokb=\toks25
|
||||
\t@pgf@tokc=\toks26
|
||||
\pgf@sys@id@count=\count96
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
|
||||
File: pgf.cfg 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
Driver file for pgf: pgfsys-pdftex.def
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
|
||||
File: pgfsys-pdftex.def 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de
|
||||
f
|
||||
File: pgfsys-common-pdf.def 2019/02/02 v3.1.1 (3.1.1)
|
||||
)))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.
|
||||
tex
|
||||
File: pgfsyssoftpath.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgfsyssoftpath@smallbuffer@items=\count97
|
||||
\pgfsyssoftpath@bigbuffer@items=\count98
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.
|
||||
tex
|
||||
File: pgfsysprotocol.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
Package: pgfcore 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
|
||||
\pgfmath@dimen=\dimen123
|
||||
\pgfmath@count=\count99
|
||||
\pgfmath@box=\box28
|
||||
\pgfmath@toks=\toks27
|
||||
\pgfmath@stack@operand=\toks28
|
||||
\pgfmath@stack@operation=\toks29
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code
|
||||
.tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet
|
||||
ric.code.tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod
|
||||
e.tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison
|
||||
.code.tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.
|
||||
tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code
|
||||
.tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.
|
||||
tex)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari
|
||||
thmetics.code.tex)))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
|
||||
\c@pgfmathroundto@lastzeros=\count100
|
||||
))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te
|
||||
x
|
||||
File: pgfcorepoints.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@picminx=\dimen124
|
||||
\pgf@picmaxx=\dimen125
|
||||
\pgf@picminy=\dimen126
|
||||
\pgf@picmaxy=\dimen127
|
||||
\pgf@pathminx=\dimen128
|
||||
\pgf@pathmaxx=\dimen129
|
||||
\pgf@pathminy=\dimen130
|
||||
\pgf@pathmaxy=\dimen131
|
||||
\pgf@xx=\dimen132
|
||||
\pgf@xy=\dimen133
|
||||
\pgf@yx=\dimen134
|
||||
\pgf@yy=\dimen135
|
||||
\pgf@zx=\dimen136
|
||||
\pgf@zy=\dimen137
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.
|
||||
code.tex
|
||||
File: pgfcorepathconstruct.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@path@lastx=\dimen138
|
||||
\pgf@path@lasty=\dimen139
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code
|
||||
.tex
|
||||
File: pgfcorepathusage.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@shorten@end@additional=\dimen140
|
||||
\pgf@shorten@start@additional=\dimen141
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te
|
||||
x
|
||||
File: pgfcorescopes.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgfpic=\box29
|
||||
\pgf@hbox=\box30
|
||||
\pgf@layerbox@main=\box31
|
||||
\pgf@picture@serial@count=\count101
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c
|
||||
ode.tex
|
||||
File: pgfcoregraphicstate.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgflinewidth=\dimen142
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation
|
||||
s.code.tex
|
||||
File: pgfcoretransformations.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@pt@x=\dimen143
|
||||
\pgf@pt@y=\dimen144
|
||||
\pgf@pt@temp=\dimen145
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
|
||||
File: pgfcorequick.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t
|
||||
ex
|
||||
File: pgfcoreobjects.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing
|
||||
.code.tex
|
||||
File: pgfcorepathprocessing.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te
|
||||
x
|
||||
File: pgfcorearrows.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgfarrowsep=\dimen146
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
|
||||
File: pgfcoreshade.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@max=\dimen147
|
||||
\pgf@sys@shading@range@num=\count102
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
|
||||
File: pgfcoreimage.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.
|
||||
tex
|
||||
File: pgfcoreexternal.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgfexternal@startupbox=\box32
|
||||
))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te
|
||||
x
|
||||
File: pgfcorelayers.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c
|
||||
ode.tex
|
||||
File: pgfcoretransparency.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.
|
||||
tex
|
||||
File: pgfcorepatterns.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
|
||||
File: pgfcorerdf.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
|
||||
File: pgfmoduleshapes.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgfnodeparttextbox=\box33
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex
|
||||
File: pgfmoduleplot.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65
|
||||
.sty
|
||||
Package: pgfcomp-version-0-65 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@nodesepstart=\dimen148
|
||||
\pgf@nodesepend=\dimen149
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18
|
||||
.sty
|
||||
Package: pgfcomp-version-1-18 2019/02/02 v3.1.1 (3.1.1)
|
||||
)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex))
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
Package: pgffor 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)
|
||||
\pgffor@iter=\dimen150
|
||||
\pgffor@skip=\dimen151
|
||||
\pgffor@stack=\toks30
|
||||
\pgffor@toks=\toks31
|
||||
))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
Package: tikz 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers
|
||||
.code.tex
|
||||
File: pgflibraryplothandlers.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgf@plot@mark@count=\count103
|
||||
\pgfplotmarksize=\dimen152
|
||||
)
|
||||
\tikz@lastx=\dimen153
|
||||
\tikz@lasty=\dimen154
|
||||
\tikz@lastxsaved=\dimen155
|
||||
\tikz@lastysaved=\dimen156
|
||||
\tikzleveldistance=\dimen157
|
||||
\tikzsiblingdistance=\dimen158
|
||||
\tikz@figbox=\box34
|
||||
\tikz@figbox@bg=\box35
|
||||
\tikz@tempbox=\box36
|
||||
\tikz@tempbox@bg=\box37
|
||||
\tikztreelevel=\count104
|
||||
\tikznumberofchildren=\count105
|
||||
\tikznumberofcurrentchild=\count106
|
||||
\tikz@fig@count=\count107
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex
|
||||
File: pgfmodulematrix.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
\pgfmatrixcurrentrow=\count108
|
||||
\pgfmatrixcurrentcolumn=\count109
|
||||
\pgf@matrix@numberofcolumns=\count110
|
||||
)
|
||||
\tikz@expandcount=\count111
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik
|
||||
zlibrarytopaths.code.tex
|
||||
File: tikzlibrarytopaths.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik
|
||||
zlibrarypositioning.code.tex
|
||||
File: tikzlibrarypositioning.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik
|
||||
zlibraryshadows.code.tex
|
||||
File: tikzlibraryshadows.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik
|
||||
zlibraryfadings.code.tex
|
||||
File: tikzlibraryfadings.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings.code
|
||||
.tex
|
||||
File: pgflibraryfadings.code.tex 2019/02/02 v3.1.1 (3.1.1)
|
||||
))) (/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty
|
||||
Package: calc 2017/05/25 v4.3 Infix arithmetic (KKT,FJ)
|
||||
\calc@Acount=\count112
|
||||
\calc@Bcount=\count113
|
||||
\calc@Adimen=\dimen159
|
||||
\calc@Bdimen=\dimen160
|
||||
\calc@Askip=\skip43
|
||||
\calc@Bskip=\skip44
|
||||
LaTeX Info: Redefining \setlength on input line 80.
|
||||
LaTeX Info: Redefining \addtolength on input line 81.
|
||||
\calc@Ccount=\count114
|
||||
\calc@Cskip=\skip45
|
||||
)
|
||||
\c@@todonotes@numberoftodonotes=\count115
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
\Urlmuskip=\muskip10
|
||||
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
|
||||
Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer
|
||||
s
|
||||
\f@nch@headwidth=\skip46
|
||||
\f@nch@O@elh=\skip47
|
||||
\f@nch@O@erh=\skip48
|
||||
\f@nch@O@olh=\skip49
|
||||
\f@nch@O@orh=\skip50
|
||||
\f@nch@O@elf=\skip51
|
||||
\f@nch@O@erf=\skip52
|
||||
\f@nch@O@olf=\skip53
|
||||
\f@nch@O@orf=\skip54
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/ms/ragged2e.sty
|
||||
Package: ragged2e 2009/05/21 v2.1 ragged2e Package (MS)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/ms/everysel.sty
|
||||
Package: everysel 2011/10/28 v1.2 EverySelectfont Package (MS)
|
||||
)
|
||||
\CenteringLeftskip=\skip55
|
||||
\RaggedLeftLeftskip=\skip56
|
||||
\RaggedRightLeftskip=\skip57
|
||||
\CenteringRightskip=\skip58
|
||||
\RaggedLeftRightskip=\skip59
|
||||
\RaggedRightRightskip=\skip60
|
||||
\CenteringParfillskip=\skip61
|
||||
\RaggedLeftParfillskip=\skip62
|
||||
\RaggedRightParfillskip=\skip63
|
||||
\JustifyingParfillskip=\skip64
|
||||
\CenteringParindent=\skip65
|
||||
\RaggedLeftParindent=\skip66
|
||||
\RaggedRightParindent=\skip67
|
||||
\JustifyingParindent=\skip68
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
|
||||
\lst@mode=\count116
|
||||
\lst@gtempboxa=\box38
|
||||
\lst@token=\toks32
|
||||
\lst@length=\count117
|
||||
\lst@currlwidth=\dimen161
|
||||
\lst@column=\count118
|
||||
\lst@pos=\count119
|
||||
\lst@lostspace=\dimen162
|
||||
\lst@width=\dimen163
|
||||
\lst@newlines=\count120
|
||||
\lst@lineno=\count121
|
||||
\lst@maxwidth=\dimen164
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2018/09/02 1.7 (Carsten Heinz)
|
||||
\c@lstnumber=\count122
|
||||
\lst@skipnumbers=\count123
|
||||
\lst@framebox=\box39
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
File: listings.cfg 2018/09/02 1.7 listings configuration
|
||||
))
|
||||
Package: listings 2018/09/02 1.7 (Carsten Heinz)
|
||||
|
||||
(./custom-listing.tex) (./main.aux)
|
||||
\openout1 = `main.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 34.
|
||||
LaTeX Font Info: ... okay on input line 34.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 34.
|
||||
LaTeX Font Info: ... okay on input line 34.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 34.
|
||||
LaTeX Font Info: ... okay on input line 34.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 34.
|
||||
LaTeX Font Info: ... okay on input line 34.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 34.
|
||||
LaTeX Font Info: ... okay on input line 34.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 34.
|
||||
LaTeX Font Info: ... okay on input line 34.
|
||||
|
||||
*geometry* driver: auto-detecting
|
||||
*geometry* detected driver: pdftex
|
||||
*geometry* verbose mode - [ preamble ] result:
|
||||
* driver: pdftex
|
||||
* paper: a4paper
|
||||
* layout: <same size as paper>
|
||||
* layoutoffset:(h,v)=(0.0pt,0.0pt)
|
||||
* modes: includehead
|
||||
* h-part:(L,W,R)=(85.35826pt, 426.79134pt, 85.35828pt)
|
||||
* v-part:(T,H,B)=(42.67912pt, 731.23584pt, 71.13188pt)
|
||||
* \paperwidth=597.50787pt
|
||||
* \paperheight=845.04684pt
|
||||
* \textwidth=426.79134pt
|
||||
* \textheight=691.23584pt
|
||||
* \oddsidemargin=13.08827pt
|
||||
* \evensidemargin=13.08827pt
|
||||
* \topmargin=-29.59087pt
|
||||
* \headheight=15.0pt
|
||||
* \headsep=25.0pt
|
||||
* \topskip=12.0pt
|
||||
* \footskip=30.0pt
|
||||
* \marginparwidth=56.9055pt
|
||||
* \marginparsep=10.0pt
|
||||
* \columnsep=10.0pt
|
||||
* \skip\footins=10.8pt plus 4.0pt minus 2.0pt
|
||||
* \hoffset=0.0pt
|
||||
* \voffset=0.0pt
|
||||
* \mag=1000
|
||||
* \@twocolumnfalse
|
||||
* \@twosidefalse
|
||||
* \@mparswitchfalse
|
||||
* \@reversemarginfalse
|
||||
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count124
|
||||
\scratchdimen=\dimen165
|
||||
\scratchbox=\box40
|
||||
\nofMPsegments=\count125
|
||||
\nofMParguments=\count126
|
||||
\everyMPshowfont=\toks33
|
||||
\MPscratchCnt=\count127
|
||||
\MPscratchDim=\dimen166
|
||||
\MPnumerator=\count128
|
||||
\makeMPintoPDFobject=\count129
|
||||
\everyMPtoPDFconversion=\toks34
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
|
||||
Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty
|
||||
Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
|
||||
)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
|
||||
Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
|
||||
Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
|
||||
Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
|
||||
)))
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
|
||||
Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
|
||||
Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty
|
||||
Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty
|
||||
Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
|
||||
Package ifluatex Info: LuaTeX not detected.
|
||||
))))
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
|
||||
Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO
|
||||
)
|
||||
Package pdftexcmds Info: LuaTeX not detected.
|
||||
Package pdftexcmds Info: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode found.
|
||||
)
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
38.
|
||||
Package grfext Info: Graphics extension search list:
|
||||
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE
|
||||
G,.JBIG2,.JB2,.eps]
|
||||
(grfext) \AppendGraphicsExtensions on input line 456.
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
ABD: EveryShipout initializing macros ABD: EverySelectfont initializing macros
|
||||
LaTeX Info: Redefining \selectfont on input line 34.
|
||||
\c@lstlisting=\count130
|
||||
<images/uni-augsburg.jpeg, id=29, 465.23813pt x 238.64156pt>
|
||||
File: images/uni-augsburg.jpeg Graphic file (type jpg)
|
||||
<use images/uni-augsburg.jpeg>
|
||||
Package pdftex.def Info: images/uni-augsburg.jpeg used on input line 57.
|
||||
(pdftex.def) Requested size: 170.71393pt x 87.56407pt.
|
||||
|
||||
[1
|
||||
|
||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./images/uni-augsburg.jpeg
|
||||
>] [1] (./main.toc
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <12> on input line 2.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <8> on input line 2.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <6> on input line 2.
|
||||
[2])
|
||||
\tf@toc=\write4
|
||||
\openout4 = `main.toc'.
|
||||
|
||||
[3] (./chapters/introduction.tex [1]) [2]
|
||||
(./chapters/chapter01.tex) [3] (./chapters/chapter03.tex) [4]
|
||||
(./chapters/chapter04.tex [5]) [6] (./chapters/chapter05.tex
|
||||
(../lib/turf-simplify/index.js
|
||||
LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10> not available
|
||||
(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 116.
|
||||
) (../lib/simplify-js-alternative/simplify.diff)
|
||||
[7] [8] (../lib/simplify-wasm/index.js)
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <7> on input line 49.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <5> on input line 49.
|
||||
(../lib/simplify-wasm/index.js)
|
||||
[9]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 61--61
|
||||
[][]$\OT1/cmtt/m/n/10 https : / / emscripten . org / docs / api _ reference / p
|
||||
reamble . js . html #
|
||||
[]
|
||||
|
||||
(../lib/wasm-util/coordinates.js)) [10] (./chapters/chapter06.tex)
|
||||
(./chapters/results.tex) [11] (./chapters/conclusion.tex) [12] (./main.lol)
|
||||
\tf@lol=\write5
|
||||
\openout5 = `main.lol'.
|
||||
|
||||
|
||||
[13] (./main.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
14939 strings out of 492615
|
||||
289125 string characters out of 6131390
|
||||
421122 words of memory out of 5000000
|
||||
18513 multiletter control sequences out of 15000+600000
|
||||
8583 words of font info for 31 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
62i,12n,81p,1556b,1286s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/c
|
||||
m/cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr1
|
||||
0.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb><
|
||||
/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/sha
|
||||
re/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texli
|
||||
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmsl12.pfb></usr/share/texlive/tex
|
||||
mf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/share/texlive/texmf-dis
|
||||
t/fonts/type1/public/amsfonts/cm/cmtt12.pfb>
|
||||
Output written on main.pdf (17 pages, 170327 bytes).
|
||||
PDF statistics:
|
||||
119 PDF objects out of 1000 (max. 8388607)
|
||||
74 compressed objects within 1 object stream
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
114 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
@ -1,4 +0,0 @@
|
||||
\contentsline {lstlisting}{\numberline {1}Turf.js usage of simplify.js}{8}%
|
||||
\contentsline {lstlisting}{\numberline {2}Snippet of the difference between the original Simplify.js and alternative}{8}%
|
||||
\contentsline {lstlisting}{\numberline {3}My Caption}{9}%
|
||||
\contentsline {lstlisting}{\numberline {4}The storeCoords function}{10}%
|
BIN
thesis/main.pdf
BIN
thesis/main.pdf
Binary file not shown.
Binary file not shown.
@ -1,48 +0,0 @@
|
||||
\contentsline {section}{\numberline {1}Introduction}{1}%
|
||||
\contentsline {subsection}{\numberline {1.1}Binary instruction sets on the web platform}{1}%
|
||||
\contentsline {subsection}{\numberline {1.2}Performance as important factor for web applications}{1}%
|
||||
\contentsline {subsection}{\numberline {1.3}Topology simplification for rendering performance}{2}%
|
||||
\contentsline {subsection}{\numberline {1.4}Structure of this thesis}{2}%
|
||||
\contentsline {section}{\numberline {2}Principles}{3}%
|
||||
\contentsline {subsection}{\numberline {2.1}Polygon basics}{3}%
|
||||
\contentsline {subsubsection}{\numberline {2.1.1}Topological aspects}{3}%
|
||||
\contentsline {subsection}{\numberline {2.2}LineString simplification}{3}%
|
||||
\contentsline {subsubsection}{\numberline {2.2.1}Positional errors}{3}%
|
||||
\contentsline {subsubsection}{\numberline {2.2.2}Length errors}{3}%
|
||||
\contentsline {subsubsection}{\numberline {2.2.3}Area Errors}{3}%
|
||||
\contentsline {section}{\numberline {3}Algorithms}{4}%
|
||||
\contentsline {subsection}{\numberline {3.1}n-th point algorithm}{4}%
|
||||
\contentsline {subsection}{\numberline {3.2}Random-point routine}{4}%
|
||||
\contentsline {subsection}{\numberline {3.3}Radial distance algorithm}{4}%
|
||||
\contentsline {subsection}{\numberline {3.4}Perpendicular distance algorithm}{4}%
|
||||
\contentsline {subsection}{\numberline {3.5}Reumann-Witkam simplification}{4}%
|
||||
\contentsline {subsection}{\numberline {3.6}Opheim simplification}{4}%
|
||||
\contentsline {subsection}{\numberline {3.7}Lang simplification}{4}%
|
||||
\contentsline {subsection}{\numberline {3.8}Douglas-Peucker simplification}{4}%
|
||||
\contentsline {subsubsection}{\numberline {3.8.1}with reduction parameter}{4}%
|
||||
\contentsline {subsection}{\numberline {3.9}Jenks simplification}{4}%
|
||||
\contentsline {subsection}{\numberline {3.10}Visvalingam-Whyatt simplification}{4}%
|
||||
\contentsline {subsection}{\numberline {3.11}Zhao-Saalfeld simplification}{4}%
|
||||
\contentsline {subsection}{\numberline {3.12}Summary}{4}%
|
||||
\contentsline {section}{\numberline {4}WebAssembly}{5}%
|
||||
\contentsline {subsection}{\numberline {4.1}Introduction to Webassembly}{5}%
|
||||
\contentsline {subsubsection}{\numberline {4.1.1}Existing compilers}{5}%
|
||||
\contentsline {subsubsection}{\numberline {4.1.2}Technical hurdles}{5}%
|
||||
\contentsline {subsubsection}{\numberline {4.1.3}Benefits of WebAssembly}{5}%
|
||||
\contentsline {subsection}{\numberline {4.2}Two test cases - performance and integration}{6}%
|
||||
\contentsline {paragraph}{Performance}{6}%
|
||||
\contentsline {paragraph}{Integration}{6}%
|
||||
\contentsline {section}{\numberline {5}Benchmark}{7}%
|
||||
\contentsline {subsection}{\numberline {5.1}State of the art: simplifyJS}{7}%
|
||||
\contentsline {subsection}{\numberline {5.2}The webassembly solution}{8}%
|
||||
\contentsline {subsection}{\numberline {5.3}The implementation}{10}%
|
||||
\contentsline {section}{\numberline {6}Compiling an existing C++ library for use on the web}{11}%
|
||||
\contentsline {subsection}{\numberline {6.1}State of the art: psimpl}{11}%
|
||||
\contentsline {subsection}{\numberline {6.2}Compiling to webassembly}{11}%
|
||||
\contentsline {subsubsection}{\numberline {6.2.1}Introduction to emscripten}{11}%
|
||||
\contentsline {subsection}{\numberline {6.3}Preserving topology GeoJSON vs TopoJSON}{11}%
|
||||
\contentsline {subsection}{\numberline {6.4}The implementation}{11}%
|
||||
\contentsline {section}{\numberline {7}Results}{11}%
|
||||
\contentsline {subsection}{\numberline {7.1}Benchmark results}{11}%
|
||||
\contentsline {subsection}{\numberline {7.2}Comparing the results of different algorithms}{11}%
|
||||
\contentsline {section}{\numberline {8}Conclusion}{12}%
|
Loading…
Reference in New Issue
Block a user