Merge branch 'master' into 19prep
306
README.rst
@@ -3,63 +3,41 @@ Minecraft Overviewer
|
|||||||
====================
|
====================
|
||||||
By Andrew Brown and contributors (see CONTRIBUTORS.rst).
|
By Andrew Brown and contributors (see CONTRIBUTORS.rst).
|
||||||
|
|
||||||
http://github.com/overviewer/Minecraft-Overviewer
|
Documentation:
|
||||||
|
http://docs.overviewer.org
|
||||||
|
|
||||||
Generates large resolution images of a Minecraft map.
|
Github code repository:
|
||||||
|
http://github.com/overviewer/Minecraft-Overviewer
|
||||||
|
|
||||||
In short, this program reads in Minecraft world files and renders very large
|
|
||||||
resolution images that can be viewed through a Google Maps interface. It
|
|
||||||
performs a similar function to the existing Minecraft Cartographer program but
|
|
||||||
with a slightly different goal in mind: to generate large resolution images
|
|
||||||
such that one can zoom in and see details.
|
|
||||||
|
|
||||||
See some examples here!
|
The Minecraft Overviewer is a command-line tool for rendering high-resolution
|
||||||
http://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples
|
maps of Minecraft worlds. It generates a set of static html and image files and
|
||||||
|
uses the Google Maps API to display a nice interactive map.
|
||||||
|
|
||||||
Further documentation may be found at
|
The Overviewer has been in active development for over a year and has many
|
||||||
https://github.com/overviewer/Minecraft-Overviewer/wiki/Documentation
|
features, including day and night lighting, cave rendering, mineral overlays,
|
||||||
|
and many plugins for even more features! It is written mostly in Python with
|
||||||
|
critical sections in C as an extension module.
|
||||||
|
|
||||||
To contact the developers and other users, go to the site at the top of this
|
Getting Started
|
||||||
README, or go to #overviewer on irc.freenode.net.
|
---------------
|
||||||
|
All documentation has been consolidated at our documentation site. For
|
||||||
|
information on downloading, compiling, installing, and running The Overviewer,
|
||||||
|
visit the docs site.
|
||||||
|
|
||||||
Features
|
http://docs.overviewer.org
|
||||||
========
|
|
||||||
|
|
||||||
* Renders large resolution images of your world, such that you can zoom in and
|
A few helpful tips are below, but everyone is going to want to visit the
|
||||||
see details
|
documentation site for the most up-to-date and complete set of instructions!
|
||||||
|
|
||||||
* Customizable textures! Pulls textures straight from your installed texture
|
Alternatively, the docs are also in the docs/ directory of the source download.
|
||||||
pack!
|
Look in there if you can't access the docs site.
|
||||||
|
|
||||||
* Outputs a Google Map powered interface that is memory efficient, both in
|
Examples
|
||||||
generating and viewing.
|
--------
|
||||||
|
See examples of The Overviewer in action!
|
||||||
|
|
||||||
* Renders efficiently in parallel, using as many simultaneous processes as you
|
https://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples
|
||||||
want!
|
|
||||||
|
|
||||||
* Utilizes caching to speed up subsequent renderings of your world.
|
|
||||||
|
|
||||||
* Throw the output directory up on a web server to share your Minecraft world
|
|
||||||
with everyone!
|
|
||||||
|
|
||||||
Requirements
|
|
||||||
============
|
|
||||||
This program requires:
|
|
||||||
|
|
||||||
* Python 2.6 or 2.7 <http://python.org/download/>
|
|
||||||
* PIL (Python Imaging Library) <http://www.pythonware.com/products/pil/>
|
|
||||||
* Numpy <http://scipy.org/Download>
|
|
||||||
* Either the Minecraft client installed, or a terrain.png file. See the
|
|
||||||
`Textures`_ section below.
|
|
||||||
* A C compiler.
|
|
||||||
|
|
||||||
If you download a binary package, then some or all of these may not be required.
|
|
||||||
|
|
||||||
Using the Overviewer
|
|
||||||
====================
|
|
||||||
|
|
||||||
For a quick-start guide, see
|
|
||||||
https://github.com/overviewer/Minecraft-Overviewer/wiki/Quick-Start-Guide
|
|
||||||
|
|
||||||
Disclaimers
|
Disclaimers
|
||||||
-----------
|
-----------
|
||||||
@@ -78,204 +56,6 @@ directory and it will only update the tiles it needs to.
|
|||||||
There are probably some other minor glitches along the way, hopefully they will
|
There are probably some other minor glitches along the way, hopefully they will
|
||||||
be fixed soon. See the `Bugs`_ section below.
|
be fixed soon. See the `Bugs`_ section below.
|
||||||
|
|
||||||
Textures
|
|
||||||
--------
|
|
||||||
The Overviewer uses actual textures to render your world. However, I don't
|
|
||||||
include textures in the package. You will need to do one of two things before
|
|
||||||
you can use the Overviewer:
|
|
||||||
|
|
||||||
* Make sure the Minecraft client is installed. The Overviewer will find the
|
|
||||||
installed minecraft.jar and extract the textures from it.
|
|
||||||
|
|
||||||
* Install a texture file yourself. This file is called "terrain.png" and is
|
|
||||||
normally found in your minecraft.jar file (not "Minecraft.jar", the launcher,
|
|
||||||
but rather the file that's downloaded by the launcher and installed into a
|
|
||||||
hidden directory). You can also get this file from any of the third party
|
|
||||||
texture packs out there.
|
|
||||||
|
|
||||||
Biome Tinting
|
|
||||||
-------------
|
|
||||||
With the Halloween update, biomes were added to Minecraft. In order to get
|
|
||||||
biome-accurate tinting, the Overviewer can use biome data produced by the
|
|
||||||
Minecraft Biome Extractor tool. This tool can be downloaded from:
|
|
||||||
http://www.minecraftforum.net/viewtopic.php?f=25&t=80902
|
|
||||||
|
|
||||||
If the "biomes" folder is present in the world directory, then the Overviewer
|
|
||||||
will use the biome data to tint grass and leaves automatically -- there is no
|
|
||||||
command line option to turn this feature on. If this folder does not exist,
|
|
||||||
then the Overviewer will use a static tinting for grass and leaves.
|
|
||||||
|
|
||||||
Compiling the C Extension
|
|
||||||
-------------------------
|
|
||||||
The C Extension for Overviewer is no longer optional. In addition to
|
|
||||||
providing a higher quality image compositing function that looks better on
|
|
||||||
maps with lighting enabled, it now does the bulk of the rendering.
|
|
||||||
|
|
||||||
If you downloaded Overviewer as a binary package, this extension will already
|
|
||||||
be compiled for you.
|
|
||||||
|
|
||||||
If you have a C compiler and the Python development libraries set up, you can
|
|
||||||
compile this extension like this::
|
|
||||||
|
|
||||||
python setup.py build
|
|
||||||
|
|
||||||
Note that you need the development headers for your version of Python installed,
|
|
||||||
look for a package named 'python-dev', 'python-devel' or similar. Also, some
|
|
||||||
Python distributions do not install "Imaging.h" and "ImPlatform.h" properly. If
|
|
||||||
you get errors complaining about them, you can get them from the PIL source, or
|
|
||||||
at <http://svn.effbot.org/public/tags/pil-1.1.7/libImaging/>. Just put them in
|
|
||||||
the same directory as "overviewer.py".
|
|
||||||
|
|
||||||
For more detailed instructions, check the wiki:
|
|
||||||
https://github.com/overviewer/Minecraft-Overviewer/wiki/Build-Instructions
|
|
||||||
|
|
||||||
Running
|
|
||||||
-------
|
|
||||||
To generate a set of Google Map tiles, use the overviewer.py script like this::
|
|
||||||
|
|
||||||
python overviewer.py [OPTIONS] <World # / Name / Path to World> <Output Directory>
|
|
||||||
|
|
||||||
The output directory will be created if it doesn't exist. This will generate a
|
|
||||||
set of image tiles for your world in the directory you choose. When it's done,
|
|
||||||
you will find an index.html file in the same directory that you can use to view
|
|
||||||
it.
|
|
||||||
|
|
||||||
|
|
||||||
Options
|
|
||||||
-------
|
|
||||||
|
|
||||||
-h, --help
|
|
||||||
Shows the list of options and exits
|
|
||||||
|
|
||||||
--advanced-help
|
|
||||||
Display help - including advanced options
|
|
||||||
|
|
||||||
-p PROCS, --processes=PROCS
|
|
||||||
Adding the "-p" option will utilize more cores during processing. This
|
|
||||||
can speed up rendering quite a bit. The default is set to the same
|
|
||||||
number of cores in your computer, but you can adjust it.
|
|
||||||
|
|
||||||
Example to run 5 worker processes in parallel::
|
|
||||||
|
|
||||||
python overviewer.py -p 5 <Path to World> <Output Directory>
|
|
||||||
|
|
||||||
-d, --delete
|
|
||||||
This option changes the mode of execution. No tiles are rendered, and
|
|
||||||
instead, files are deleted.
|
|
||||||
|
|
||||||
*Note*: Currently only the overviewer.dat file is deleted when you run with
|
|
||||||
this option
|
|
||||||
|
|
||||||
--forcerender
|
|
||||||
Force re-rendering the entire map (or the given regionlist). This
|
|
||||||
is an easier way to completely re-render without deleting the map.
|
|
||||||
|
|
||||||
--regionlist=regionlist
|
|
||||||
Use this option to specify manually a list of regions to consider for
|
|
||||||
updating. Without this option, every chunk in every region is checked for
|
|
||||||
update and if necessary, re-rendered. If this option points to a file
|
|
||||||
containing, 1 per line, the path to a region data file, then only those
|
|
||||||
in the list will be considered for update.
|
|
||||||
|
|
||||||
It's up to you to build such a list. On Linux or Mac, try using the "find"
|
|
||||||
command. You could, for example, output all region files that are older than
|
|
||||||
a certain date. Or perhaps you can incrementally update your map by passing
|
|
||||||
in a subset of regions each time. It's up to you!
|
|
||||||
|
|
||||||
--rendermodes=MODE1[,MODE2,...]
|
|
||||||
Use this option to specify which render mode to use, such as lighting or
|
|
||||||
night. Use --list-rendermodes to get a list of available rendermodes, and
|
|
||||||
a short description of each. If you provide more than one mode (separated
|
|
||||||
by commas), Overviewer will render all of them at once, and provide a
|
|
||||||
toggle on the resulting map to switch between them.
|
|
||||||
|
|
||||||
If for some reason commas do not work for your shell (like if you're using
|
|
||||||
Powershell on Windows), you can also use a colon ':' or a forward slash '/'
|
|
||||||
to separate the modes.
|
|
||||||
|
|
||||||
--list-rendermodes
|
|
||||||
List the available render modes, and a short description of each.
|
|
||||||
|
|
||||||
--north-direction=NORTH_DIRECTION
|
|
||||||
Specifies which corner of the screen north will point to.
|
|
||||||
Valid options are: lower-left, upper-left, upper-right, lower-right.
|
|
||||||
If you do not specify this option, it will default to whatever direction
|
|
||||||
the existing map uses. For new maps, it defaults to lower-left for
|
|
||||||
historical reasons.
|
|
||||||
|
|
||||||
--settings=PATH
|
|
||||||
Use this option to load settings from a file. The format of this file is
|
|
||||||
given below.
|
|
||||||
|
|
||||||
|
|
||||||
Settings
|
|
||||||
--------
|
|
||||||
|
|
||||||
You can optionally store settings in a file named settings.py (or really,
|
|
||||||
anything you want). It is a regular python script, so you can use any python
|
|
||||||
functions or modules you want. To use a settings file, use the --settings
|
|
||||||
command line option.
|
|
||||||
|
|
||||||
For a sample settings file, look at 'sample.settings.py'. Note that this file
|
|
||||||
is not meant to be used directly, but instead it should be used as a
|
|
||||||
collection of examples to guide writing your own.
|
|
||||||
|
|
||||||
Here's a (possibly incomplete) list of available settings, which are available
|
|
||||||
in settings.py. Note that you can also set command-line options in a similar
|
|
||||||
way.
|
|
||||||
|
|
||||||
imgformat=FORMAT
|
|
||||||
Set the output image format used for the tiles. The default is 'png',
|
|
||||||
but 'jpg' is also supported.
|
|
||||||
|
|
||||||
zoom=ZOOM
|
|
||||||
The Overviewer by default will detect how many zoom levels are required
|
|
||||||
to show your entire map. This option sets it manually.
|
|
||||||
|
|
||||||
*You do not normally need to set this option!*
|
|
||||||
|
|
||||||
This is equivalent to setting the dimensions of the highest zoom level. It
|
|
||||||
does not actually change how the map is rendered, but rather *how much of
|
|
||||||
the map is rendered.* Setting this option too low *will crop your map.*
|
|
||||||
(Calling this option "zoom" may be a bit misleading, I know)
|
|
||||||
|
|
||||||
To be precise, it sets the width and height of the highest zoom level, in
|
|
||||||
tiles. A zoom level of z means the highest zoom level of your map will be
|
|
||||||
2^z by 2^z tiles.
|
|
||||||
|
|
||||||
This option map be useful if you have some outlier chunks causing your map
|
|
||||||
to be too large, or you want to render a smaller portion of your map,
|
|
||||||
instead of rendering everything.
|
|
||||||
|
|
||||||
Remember that each additional zoom level adds 4 times as many tiles as
|
|
||||||
the last. This can add up fast, zoom level 10 has over a million tiles.
|
|
||||||
Tiles with no content will not be rendered, but they still take a small
|
|
||||||
amount of time to process.
|
|
||||||
|
|
||||||
web_assets_hook
|
|
||||||
This option lets you define a function to run after the web assets have
|
|
||||||
been copied into the output directory, but before any tile rendering takes
|
|
||||||
place. This is an ideal time to do any custom postprocessing for
|
|
||||||
markers.js or other web assets.
|
|
||||||
|
|
||||||
This function should accept one argument: a QuadtreeGen object.
|
|
||||||
|
|
||||||
web_assets_path
|
|
||||||
This option lets you provide alternative web assets to use when
|
|
||||||
rendering. The contents of this folder will be copied into the output folder
|
|
||||||
during render, and will overwrite any default files already copied by
|
|
||||||
Overviewer. See the web_assets folder included with Overviewer for the
|
|
||||||
default assets.
|
|
||||||
|
|
||||||
textures_path
|
|
||||||
This is like web_assets_path, but instead it provides an alternative texture
|
|
||||||
source. Overviewer looks in here for terrain.png and other textures before
|
|
||||||
it looks anywhere else.
|
|
||||||
|
|
||||||
north_direction
|
|
||||||
Specifies which corner of the screen north will point to.
|
|
||||||
Valid options are: lower-left, upper-left, upper-right, lower-right.
|
|
||||||
|
|
||||||
Viewing the Results
|
Viewing the Results
|
||||||
-------------------
|
-------------------
|
||||||
Within the output directory you will find two things: an index.html file, and a
|
Within the output directory you will find two things: an index.html file, and a
|
||||||
@@ -290,44 +70,12 @@ however, bound by the Google Maps API terms of service.
|
|||||||
|
|
||||||
http://code.google.com/apis/maps/terms.html
|
http://code.google.com/apis/maps/terms.html
|
||||||
|
|
||||||
Crushing the Output Tiles
|
|
||||||
-------------------------
|
|
||||||
Image files taking too much disk space? Try using pngcrush. On Linux and
|
|
||||||
probably Mac, if you have pngcrush installed, this command will go and crush
|
|
||||||
all your images in the given destination. This took the total disk usage of the
|
|
||||||
render for my world from 85M to 67M.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
find /path/to/destination -name "*.png" -exec pngcrush {} {}.crush \; -exec mv {}.crush {} \;
|
|
||||||
|
|
||||||
Or if you prefer a more parallel solution, try something like this::
|
|
||||||
|
|
||||||
find /path/to/destination -print0 | xargs -0 -n 1 -P <nr_procs> sh -c 'pngcrush $0 temp.$$ && mv temp.$$ $0'
|
|
||||||
|
|
||||||
If you're on Windows, I've gotten word that this command line snippet works
|
|
||||||
provided pngout is installed and on your path. Note that the % symbols will
|
|
||||||
need to be doubled up if this is in a batch file.
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
FOR /R c:\path\to\tiles\folder %v IN (*.png) DO pngout %v /y
|
|
||||||
|
|
||||||
Bugs
|
Bugs
|
||||||
====
|
====
|
||||||
This program has bugs. They are mostly minor things, I wouldn't have released a
|
|
||||||
completely useless program. However, there are a number of things that I want
|
|
||||||
to fix or improve.
|
|
||||||
|
|
||||||
For a current list of issues, visit
|
For a current list of issues, visit
|
||||||
http://github.com/overviewer/Minecraft-Overviewer/issues
|
https://github.com/overviewer/Minecraft-Overviewer/issues
|
||||||
|
|
||||||
Feel free to comment on issues, report new issues, and vote on issues that are
|
Feel free to comment on issues, report new issues, and vote on issues that are
|
||||||
important to you, so I can prioritize accordingly.
|
important to you.
|
||||||
|
|
||||||
An incomplete list of things I want to do soon is:
|
|
||||||
|
|
||||||
* Improve efficiency
|
|
||||||
|
|
||||||
* Some kind of graphical interface.
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ import re
|
|||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
# incantation to be able to import overviewer_core
|
# incantation to be able to import overviewer_core
|
||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
if not hasattr(sys, "frozen"):
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
||||||
|
|
||||||
from overviewer_core import world
|
from overviewer_core import world
|
||||||
from overviewer import list_worlds
|
from overviewer import list_worlds
|
||||||
|
|||||||
@@ -30,7 +30,8 @@ import os
|
|||||||
import cPickle
|
import cPickle
|
||||||
|
|
||||||
# incantation to be able to import overviewer_core
|
# incantation to be able to import overviewer_core
|
||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
if not hasattr(sys, "frozen"):
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
||||||
|
|
||||||
from overviewer_core import nbt
|
from overviewer_core import nbt
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ Very basic player.dat inspection script
|
|||||||
import sys, os
|
import sys, os
|
||||||
|
|
||||||
# incantation to be able to import overviewer_core
|
# incantation to be able to import overviewer_core
|
||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
if not hasattr(sys, "frozen"):
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
||||||
|
|
||||||
from overviewer_core.nbt import load
|
from overviewer_core.nbt import load
|
||||||
from overviewer_core import items
|
from overviewer_core import items
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ import sys,os
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
# incantation to be able to import overviewer_core
|
# incantation to be able to import overviewer_core
|
||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
if not hasattr(sys, "frozen"):
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
||||||
|
|
||||||
from overviewer_core import nbt
|
from overviewer_core import nbt
|
||||||
from overviewer_core import world
|
from overviewer_core import world
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
# incantation to be able to import overviewer_core
|
# incantation to be able to import overviewer_core
|
||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
if not hasattr(sys, "frozen"):
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')))
|
||||||
|
|
||||||
from overviewer_core import nbt
|
from overviewer_core import nbt
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ import os.path
|
|||||||
import ast
|
import ast
|
||||||
|
|
||||||
# incantation to be able to import overviewer_core
|
# incantation to be able to import overviewer_core
|
||||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '.')))
|
if not hasattr(sys, "frozen"):
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.split(__file__)[0], '.')))
|
||||||
|
|
||||||
from overviewer_core import nbt
|
from overviewer_core import nbt
|
||||||
|
|
||||||
|
|||||||
132
docs/Makefile
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
# Makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line.
|
||||||
|
SPHINXOPTS =
|
||||||
|
SPHINXBUILD = sphinx-build
|
||||||
|
PAPER =
|
||||||
|
BUILDDIR = _build
|
||||||
|
|
||||||
|
# Internal variables.
|
||||||
|
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||||
|
PAPEROPT_letter = -D latex_paper_size=letter
|
||||||
|
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||||
|
|
||||||
|
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
|
||||||
|
|
||||||
|
default: html
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "Please use \`make <target>' where <target> is one of"
|
||||||
|
@echo " html to make standalone HTML files"
|
||||||
|
@echo " dirhtml to make HTML files named index.html in directories"
|
||||||
|
@echo " singlehtml to make a single large HTML file"
|
||||||
|
@echo " pickle to make pickle files"
|
||||||
|
@echo " json to make JSON files"
|
||||||
|
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||||
|
@echo " qthelp to make HTML files and a qthelp project"
|
||||||
|
@echo " devhelp to make HTML files and a Devhelp project"
|
||||||
|
@echo " epub to make an epub"
|
||||||
|
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||||
|
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||||
|
@echo " text to make text files"
|
||||||
|
@echo " man to make manual pages"
|
||||||
|
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||||
|
@echo " linkcheck to check all external links for integrity"
|
||||||
|
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
|
html:
|
||||||
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||||
|
|
||||||
|
dirhtml:
|
||||||
|
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||||
|
|
||||||
|
singlehtml:
|
||||||
|
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||||
|
|
||||||
|
pickle:
|
||||||
|
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can process the pickle files."
|
||||||
|
|
||||||
|
json:
|
||||||
|
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can process the JSON files."
|
||||||
|
|
||||||
|
htmlhelp:
|
||||||
|
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||||
|
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||||
|
|
||||||
|
qthelp:
|
||||||
|
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||||
|
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||||
|
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Overviewer.qhcp"
|
||||||
|
@echo "To view the help file:"
|
||||||
|
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Overviewer.qhc"
|
||||||
|
|
||||||
|
devhelp:
|
||||||
|
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished."
|
||||||
|
@echo "To view the help file:"
|
||||||
|
@echo "# mkdir -p $$HOME/.local/share/devhelp/Overviewer"
|
||||||
|
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Overviewer"
|
||||||
|
@echo "# devhelp"
|
||||||
|
|
||||||
|
epub:
|
||||||
|
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||||
|
|
||||||
|
latex:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||||
|
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||||
|
"(use \`make latexpdf' here to do that automatically)."
|
||||||
|
|
||||||
|
latexpdf:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo "Running LaTeX files through pdflatex..."
|
||||||
|
make -C $(BUILDDIR)/latex all-pdf
|
||||||
|
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||||
|
|
||||||
|
text:
|
||||||
|
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||||
|
|
||||||
|
man:
|
||||||
|
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||||
|
|
||||||
|
changes:
|
||||||
|
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||||
|
@echo
|
||||||
|
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||||
|
|
||||||
|
linkcheck:
|
||||||
|
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||||
|
@echo
|
||||||
|
@echo "Link check complete; look for any errors in the above output " \
|
||||||
|
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||||
|
|
||||||
|
doctest:
|
||||||
|
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||||
|
@echo "Testing of doctests in the sources finished, look at the " \
|
||||||
|
"results in $(BUILDDIR)/doctest/output.txt."
|
||||||
161
docs/building.rst
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
===================================
|
||||||
|
Building the Overviewer from Source
|
||||||
|
===================================
|
||||||
|
|
||||||
|
These instructions are for building the C extension for Overviewer. Also note
|
||||||
|
that pre-built Windows and Debian executables are available in the `Downloads
|
||||||
|
<https://github.com/overviewer/Minecraft-Overviewer/downloads>`_ section. These
|
||||||
|
kits already contain the compiled extension and require no further setup (so you
|
||||||
|
can skip to the :doc:`Running <running>` section of the docs).
|
||||||
|
|
||||||
|
Get The Source
|
||||||
|
==============
|
||||||
|
First step: download the source! Either clone with Git or download the most recent snapshot
|
||||||
|
|
||||||
|
* URL to clone: ``git://github.com/overviewer/Minecraft-Overviewer.git``
|
||||||
|
* `Download most recent tar archive <https://github.com/overviewer/Minecraft-Overviewer/tarball/master>`_
|
||||||
|
|
||||||
|
* `Download most recent zip archive <https://github.com/overviewer/Minecraft-Overviewer/zipball/master>`_
|
||||||
|
|
||||||
|
Build Instructions For Various Operating Systems
|
||||||
|
================================================
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Windows Build Instructions
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
First, you'll need a compiler. You can either use Visual Studio, or
|
||||||
|
cygwin/mingw. The free `Visual Studio Express
|
||||||
|
<http://www.microsoft.com/express/Windows/>`_ is okay. You will want the C++
|
||||||
|
version (Microsoft® Visual C++® 2010 Express). Note that the Express version of
|
||||||
|
Visual Studio will only build 32-bit executables. We currently don't have a
|
||||||
|
recommended way of building Overviewer on 64-bit Windows using free tools. If you
|
||||||
|
have bought a copy of Visual Studio, you can use it for 64-bit builds.
|
||||||
|
|
||||||
|
|
||||||
|
Prerequisits
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
You will need a copy of the `PIL sources <http://www.pythonware.com/products/pil/>`_.
|
||||||
|
|
||||||
|
Building with Visual Studio
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
1. Get the latest Overviewer source code as per above.
|
||||||
|
2. From the Start menu, navigate to the 'Microsoft Visual Studio 2010 Express' and open the 'Visual Studio Command Prompt (2010)' shortcut.
|
||||||
|
3. cd to the folder containing the Overviewer source code.
|
||||||
|
4. Copy Imaging.h and ImPlatform.h from your PIL installation into the current working directory.
|
||||||
|
5. First try a build::
|
||||||
|
|
||||||
|
c:\python26\python setup.py build
|
||||||
|
|
||||||
|
If you encounter the following errors::
|
||||||
|
|
||||||
|
error: Unable to find vcvarsall.bat
|
||||||
|
|
||||||
|
then try the following::
|
||||||
|
|
||||||
|
set DISTUTILS_USE_SDK=1
|
||||||
|
set MSSdk=1
|
||||||
|
c:\python26\python setup.py build
|
||||||
|
|
||||||
|
If the build was successful, there should be a c_overviewer.pyd file in your current working directory.
|
||||||
|
|
||||||
|
Building with mingw
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
1. Open a MinGW shell.
|
||||||
|
2. cd to the Overviewer directory.
|
||||||
|
3. Copy Imaging.h and ImPlatform.h from your PIL installation into the current working directory.
|
||||||
|
4. Build::
|
||||||
|
|
||||||
|
python setup.py build --compiler=mingw32
|
||||||
|
|
||||||
|
|
||||||
|
Linux
|
||||||
|
-----
|
||||||
|
|
||||||
|
You will need the gcc compiler and a working build environment. On Ubuntu and
|
||||||
|
Debian, this can be done by installing the ``build-essential`` package. For
|
||||||
|
CentOS machines, see the :ref:`centos` section below
|
||||||
|
|
||||||
|
You will need the following packages (at least):
|
||||||
|
|
||||||
|
* python-imaging (for PIL)
|
||||||
|
* python-dev
|
||||||
|
* python-numpy
|
||||||
|
|
||||||
|
Then to build::
|
||||||
|
|
||||||
|
python setup.py build
|
||||||
|
|
||||||
|
OSX
|
||||||
|
---
|
||||||
|
|
||||||
|
1. Download the source code for PIL from http://www.pythonware.com/products/pil/
|
||||||
|
2. Compile the PIL code (``python ./setup.py build``)
|
||||||
|
3. Install PIL (``sudo python ./setup.py install``)
|
||||||
|
4. Find the path to libImaging in the PIL source tree
|
||||||
|
5. Build Minecraft Overviewer with the path from step 3 as the value for C_INCLUDE_PATH::
|
||||||
|
|
||||||
|
C_INCLUDE_PATH="path from step 3" python ./setup.py build
|
||||||
|
|
||||||
|
The following script (copied into your MCO source directory) should handle everything for you:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# start with a clean place to work
|
||||||
|
python ./setup.py clean
|
||||||
|
|
||||||
|
# get PIL
|
||||||
|
if [ ! -d "`pwd`/Imaging-1.1.7/libImaging" ]; then
|
||||||
|
/usr/bin/curl -o imaging.tgz http://effbot.org/media/downloads/Imaging-1.1.7.tar.gz
|
||||||
|
tar xzf imaging.tgz
|
||||||
|
rm imaging.tgz
|
||||||
|
fi
|
||||||
|
|
||||||
|
# build MCO
|
||||||
|
C_INCLUDE_PATH="`pwd`/Imaging-1.1.7/libImaging" python ./setup.py build
|
||||||
|
|
||||||
|
.. _centos:
|
||||||
|
|
||||||
|
CentOS
|
||||||
|
------
|
||||||
|
Since CentOS has an older version of Python (2.4), there are some difficulties
|
||||||
|
in getting the Overviewer to work. Follow these steps which have been reported
|
||||||
|
to work.
|
||||||
|
|
||||||
|
Note: commands prefixed with a "#" mean to run as root, and "$" mean to run as a
|
||||||
|
regular user.
|
||||||
|
|
||||||
|
1. Install the `EPEL repo <http://fedoraproject.org/wiki/EPEL>`_. Go to step #2 if you already have the EPEL repo installed.
|
||||||
|
|
||||||
|
1. ``$ wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm``
|
||||||
|
2. ``# rpm -Uhv epel-release-5-4.noarch.rpm``
|
||||||
|
|
||||||
|
2. Install the python26 packages and build dependancies
|
||||||
|
|
||||||
|
1. ``# yum groupinstall -y 'Development Tools'``
|
||||||
|
2. ``# yum install -y python26{,-imaging,-numpy}{,-devel}``
|
||||||
|
|
||||||
|
3. Install and setup Overviewer
|
||||||
|
|
||||||
|
1. ``$ git clone git://github.com/overviewer/Minecraft-Overviewer.git``
|
||||||
|
2. ``$ cd Minecraft-Overviewer``
|
||||||
|
3. ``$ python26 setup.py build``
|
||||||
|
4. Change the first line of overviewer.py from ``#!/usr/bin/env python`` to ``#!/usr/bin/env python26`` so that the Python 2.6 interpreter is used instead of the default 2.4
|
||||||
|
|
||||||
|
4. Run Overviewer as usual
|
||||||
|
|
||||||
|
1. ``$ ./overviewer.py path/to/world/ path/to/output/`` or ``$ python26 path/to/overviewer.py path/to/world/ path/to/output/``
|
||||||
|
2. Proceed to the :doc:`Running <running>` instructions for more info.
|
||||||
|
|
||||||
|
|
||||||
|
Installing the Compiled Code
|
||||||
|
----------------------------
|
||||||
|
You can run the ``overviewer.py`` script from the build directory just fine. If
|
||||||
|
you'd like to install, run ``python setup.py install``
|
||||||
216
docs/conf.py
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Overviewer documentation build configuration file, created by
|
||||||
|
# sphinx-quickstart on Thu Sep 22 10:19:03 2011.
|
||||||
|
#
|
||||||
|
# This file is execfile()d with the current directory set to its containing dir.
|
||||||
|
#
|
||||||
|
# Note that not all possible configuration values are present in this
|
||||||
|
# autogenerated file.
|
||||||
|
#
|
||||||
|
# All configuration values have a default; values that are commented out
|
||||||
|
# serve to show the default.
|
||||||
|
|
||||||
|
import sys, os
|
||||||
|
|
||||||
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||||
|
sys.path.insert(0, os.path.abspath('..'))
|
||||||
|
|
||||||
|
# -- General configuration -----------------------------------------------------
|
||||||
|
|
||||||
|
# If your documentation needs a minimal Sphinx version, state it here.
|
||||||
|
#needs_sphinx = '1.0'
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||||
|
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||||
|
extensions = ['sphinx.ext.autodoc']
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
templates_path = ['_templates']
|
||||||
|
|
||||||
|
# The suffix of source filenames.
|
||||||
|
source_suffix = '.rst'
|
||||||
|
|
||||||
|
# The encoding of source files.
|
||||||
|
#source_encoding = 'utf-8-sig'
|
||||||
|
|
||||||
|
# The master toctree document.
|
||||||
|
master_doc = 'index'
|
||||||
|
|
||||||
|
# General information about the project.
|
||||||
|
project = u'Overviewer'
|
||||||
|
copyright = u'2010-2011 the Overviewer Team'
|
||||||
|
|
||||||
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
|
# |version| and |release|, also used in various other places throughout the
|
||||||
|
# built documents.
|
||||||
|
#
|
||||||
|
# The short X.Y version.
|
||||||
|
version = "0.3"
|
||||||
|
# The full version, including alpha/beta/rc tags.
|
||||||
|
release = "0.3.0"
|
||||||
|
|
||||||
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
|
# for a list of supported languages.
|
||||||
|
#language = None
|
||||||
|
|
||||||
|
# There are two options for replacing |today|: either, you set today to some
|
||||||
|
# non-false value, then it is used:
|
||||||
|
#today = ''
|
||||||
|
# Else, today_fmt is used as the format for a strftime call.
|
||||||
|
#today_fmt = '%B %d, %Y'
|
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and
|
||||||
|
# directories to ignore when looking for source files.
|
||||||
|
exclude_patterns = ['_build']
|
||||||
|
|
||||||
|
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||||
|
#default_role = None
|
||||||
|
|
||||||
|
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||||
|
#add_function_parentheses = True
|
||||||
|
|
||||||
|
# If true, the current module name will be prepended to all description
|
||||||
|
# unit titles (such as .. function::).
|
||||||
|
#add_module_names = True
|
||||||
|
|
||||||
|
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||||
|
# output. They are ignored by default.
|
||||||
|
#show_authors = False
|
||||||
|
|
||||||
|
# The name of the Pygments (syntax highlighting) style to use.
|
||||||
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
|
# A list of ignored prefixes for module index sorting.
|
||||||
|
#modindex_common_prefix = []
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output ---------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
|
# a list of builtin themes.
|
||||||
|
html_theme = 'default'
|
||||||
|
|
||||||
|
# Theme options are theme-specific and customize the look and feel of a theme
|
||||||
|
# further. For a list of options available for each theme, see the
|
||||||
|
# documentation.
|
||||||
|
#html_theme_options = {}
|
||||||
|
|
||||||
|
# Add any paths that contain custom themes here, relative to this directory.
|
||||||
|
#html_theme_path = []
|
||||||
|
|
||||||
|
# The name for this set of Sphinx documents. If None, it defaults to
|
||||||
|
# "<project> v<release> documentation".
|
||||||
|
#html_title = None
|
||||||
|
|
||||||
|
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||||
|
#html_short_title = None
|
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top
|
||||||
|
# of the sidebar.
|
||||||
|
#html_logo = None
|
||||||
|
|
||||||
|
# The name of an image file (within the static path) to use as favicon of the
|
||||||
|
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||||
|
# pixels large.
|
||||||
|
#html_favicon = None
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
html_static_path = ['_static']
|
||||||
|
|
||||||
|
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||||
|
# using the given strftime format.
|
||||||
|
#html_last_updated_fmt = '%b %d, %Y'
|
||||||
|
|
||||||
|
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||||
|
# typographically correct entities.
|
||||||
|
#html_use_smartypants = True
|
||||||
|
|
||||||
|
# Custom sidebar templates, maps document names to template names.
|
||||||
|
#html_sidebars = {}
|
||||||
|
|
||||||
|
# Additional templates that should be rendered to pages, maps page names to
|
||||||
|
# template names.
|
||||||
|
#html_additional_pages = {}
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#html_domain_indices = True
|
||||||
|
|
||||||
|
# If false, no index is generated.
|
||||||
|
#html_use_index = True
|
||||||
|
|
||||||
|
# If true, the index is split into individual pages for each letter.
|
||||||
|
#html_split_index = False
|
||||||
|
|
||||||
|
# If true, links to the reST sources are added to the pages.
|
||||||
|
#html_show_sourcelink = True
|
||||||
|
|
||||||
|
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||||
|
#html_show_sphinx = True
|
||||||
|
|
||||||
|
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||||
|
#html_show_copyright = True
|
||||||
|
|
||||||
|
# If true, an OpenSearch description file will be output, and all pages will
|
||||||
|
# contain a <link> tag referring to it. The value of this option must be the
|
||||||
|
# base URL from which the finished HTML is served.
|
||||||
|
#html_use_opensearch = ''
|
||||||
|
|
||||||
|
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||||
|
#html_file_suffix = None
|
||||||
|
|
||||||
|
# Output file base name for HTML help builder.
|
||||||
|
htmlhelp_basename = 'Overviewerdoc'
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for LaTeX output --------------------------------------------------
|
||||||
|
|
||||||
|
# The paper size ('letter' or 'a4').
|
||||||
|
#latex_paper_size = 'letter'
|
||||||
|
|
||||||
|
# The font size ('10pt', '11pt' or '12pt').
|
||||||
|
#latex_font_size = '10pt'
|
||||||
|
|
||||||
|
# Grouping the document tree into LaTeX files. List of tuples
|
||||||
|
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||||
|
latex_documents = [
|
||||||
|
('index', 'Overviewer.tex', u'Overviewer Documentation',
|
||||||
|
u'The Overviewer Team', 'manual'),
|
||||||
|
]
|
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top of
|
||||||
|
# the title page.
|
||||||
|
#latex_logo = None
|
||||||
|
|
||||||
|
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||||
|
# not chapters.
|
||||||
|
#latex_use_parts = False
|
||||||
|
|
||||||
|
# If true, show page references after internal links.
|
||||||
|
#latex_show_pagerefs = False
|
||||||
|
|
||||||
|
# If true, show URL addresses after external links.
|
||||||
|
#latex_show_urls = False
|
||||||
|
|
||||||
|
# Additional stuff for the LaTeX preamble.
|
||||||
|
#latex_preamble = ''
|
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals.
|
||||||
|
#latex_appendices = []
|
||||||
|
|
||||||
|
# If false, no module index is generated.
|
||||||
|
#latex_domain_indices = True
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for manual page output --------------------------------------------
|
||||||
|
|
||||||
|
# One entry per manual page. List of tuples
|
||||||
|
# (source start file, name, description, authors, manual section).
|
||||||
|
man_pages = [
|
||||||
|
('index', 'overviewer', u'Overviewer Documentation',
|
||||||
|
[u'The Overviewer Team'], 1)
|
||||||
|
]
|
||||||
BIN
docs/design/cube_parts.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
433
docs/design/cube_parts.svg
Normal file
@@ -0,0 +1,433 @@
|
|||||||
|
<?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="1131"
|
||||||
|
height="280.5"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="cube_parts.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/cube_parts.png"
|
||||||
|
inkscape:export-xdpi="63.639942"
|
||||||
|
inkscape:export-ydpi="63.639942">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path4162"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-5"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4162-9"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.4"
|
||||||
|
inkscape:cx="820.10257"
|
||||||
|
inkscape:cy="88.729116"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3360"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(-59.5,-402.36219)">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 330,542.36218 100,0"
|
||||||
|
id="path3386"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
id="g3080">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="120"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAB4CAYAAADMtn8nAAAABHNCSVQICAgIfAhkiAAABLZJREFU
|
||||||
|
eJzt3T2LXHUYhvGZnTnzuq8mqwtGRBsLIbVFCAQESwVtAhFcEAsRQQJpBSsFg4VJI0IIEUsL0UIs
|
||||||
|
1Fj5DWxiI+JmWZPJzu7M7Lzs+gVSXOgxu/d4/eqHc2Znzz2nuXn+1Yrm2qWr54/I3BeXb1f/68+i
|
||||||
|
8i0c9weQ9M8ZYCmYAZaCGWApmAGWghlgKZgBloIZYCmYAZaC2b45YV59/wXUnKLqDfYbfeb502Xe
|
||||||
|
tnL1la99th4B38BSMAMsBTPAUjADLAUzwFIwAywFM8BSMAMsBTPAUjDbMv/SxY/OoebU0SErWBXN
|
||||||
|
Opo7GEzQ3GQwRXOtpQLNVRfKfWSKNvt7b777o8/qQ/gGloIZYCmYAZaCGWApmAGWghlgKZgBloIZ
|
||||||
|
YCmYAZaC/e/aLZvXL6BKVL1RQ9cbD1nTaXGtieZq8L6D+yM01+yyhtVscojmelsDNLe03kZzg94B
|
||||||
|
u96pFpo7gM2zG+/8MBfPvm9gKZgBloIZYCmYAZaCGWApmAGWghlgKZgBloIZYCnYiW+jXPr4PGpO
|
||||||
|
TQ5m8IpsN1Wjw3Y1VavsK6QNoe5KA831/txHc81Fdr3uCmuKTWFjC34tlWqNDdJdYb2tPXZf+AGL
|
||||||
|
JmvG3bp8+1iy5BtYCmaApWAGWApmgKVgBlgKZoClYAZYCmaApWAGWApWenvkjU/ZzqnxPjtdr73K
|
||||||
|
mkTDXXY9ekog/WJai2znFFVvscZRf4ftpmotse+PNo4ebA/R3BLcAUbRBtiwz56DKnx1jWGDrgOf
|
||||||
|
0/Wnl9HcJ699ix5B38BSMAMsBTPAUjADLAUzwFIwAywFM8BSMAMsBTPAUrDq5jXWnKImY9Zc2Xh2
|
||||||
|
tczbVnZ+76O5Vpc1ZqjphO3iGsGG0BHc2UV14K6rWr3c3/L9++zUwaLF7ktPRaQef2YFzdG/gzo6
|
||||||
|
Yv/fLmyy+QaWghlgKZgBloIZYCmYAZaCGWApmAGWghlgKZgBloKVvhPr7ZsvoarJ3TsP0PXorqbV
|
||||||
|
JxfR3O5d1uhpL7NdV/xURGYyYtdb2eigucMpa/6MB6wp1lllDaH+DtudRTVa7P/RXGQ7xaYj1hgc
|
||||||
|
7rG5Cbxe0Waf79Z7P7kTS5p3BlgKZoClYAZYCmaApWAGWApmgKVgBlgKZoClYKU3scr21ucvoioR
|
||||||
|
bf4U8PS/zjJrHBUt1hSbTdnpeodwbu/eCM111lpobgB3P9HTHenfu/HcGpqrwlVh27/10NxjZ5bQ
|
||||||
|
3B+/3kNzX33wy7FkyTewFMwAS8EMsBTMAEvBDLAUzABLwQywFMwAS8EMsBTsxDexynbxw3Oo07NQ
|
||||||
|
Y19NrWC/gStPsB1We3+xRlmtYI2yCjztcDKEpyzu01MWmS7csbV8ijXK6GmR11//bi6efd/AUjAD
|
||||||
|
LAUzwFIwAywFM8BSMAMsBTPAUjADLAUzwFKwuWijHKfNaxdQ6ehwxrpJy+ttNLd1h+1+msHTCadD
|
||||||
|
drreU2dPo7lRf4zmagXbKfbZm9/7rD6Eb2ApmAGWghlgKZgBloIZYCmYAZaCGWApmAGWghlgKZjt
|
||||||
|
lhPmyjcv03VSyO4OO8Vwd3tQ5m0rX1752WfrEfANLAUzwFIwAywFM8BSMAMsBTPAUjADLAUzwFIw
|
||||||
|
AywF+xskAukuVl0skAAAAABJRU5ErkJggg==
|
||||||
|
"
|
||||||
|
id="image3075"
|
||||||
|
x="60"
|
||||||
|
y="407.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4600"
|
||||||
|
d="m 60,477.36218 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 50,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewerdocs/design/cube_parts.png"
|
||||||
|
inkscape:export-xdpi="300"
|
||||||
|
inkscape:export-ydpi="300" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3928">
|
||||||
|
<image
|
||||||
|
width="120"
|
||||||
|
height="180"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
QmCC
|
||||||
|
"
|
||||||
|
id="image3143"
|
||||||
|
x="60"
|
||||||
|
y="482.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4602"
|
||||||
|
d="m 60,482.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 10,0 0,120"
|
||||||
|
style="fill:none;stroke:#ff7e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3996">
|
||||||
|
<image
|
||||||
|
width="120"
|
||||||
|
height="180"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
"
|
||||||
|
id="image3991"
|
||||||
|
x="185"
|
||||||
|
y="482.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4604"
|
||||||
|
d="m 305,482.36218 -10,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -10,0 0,120"
|
||||||
|
style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(380,5.0000026)"
|
||||||
|
id="g3080-9">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="120"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAB4CAYAAADMtn8nAAAABHNCSVQICAgIfAhkiAAABLZJREFU eJzt3T2LXHUYhvGZnTnzuq8mqwtGRBsLIbVFCAQESwVtAhFcEAsRQQJpBSsFg4VJI0IIEUsL0UIs 1Fj5DWxiI+JmWZPJzu7M7Lzs+gVSXOgxu/d4/eqHc2Znzz2nuXn+1Yrm2qWr54/I3BeXb1f/68+i 8i0c9weQ9M8ZYCmYAZaCGWApmAGWghlgKZgBloIZYCmYAZaC2b45YV59/wXUnKLqDfYbfeb502Xe tnL1la99th4B38BSMAMsBTPAUjADLAUzwFIwAywFM8BSMAMsBTPAUjDbMv/SxY/OoebU0SErWBXN Opo7GEzQ3GQwRXOtpQLNVRfKfWSKNvt7b777o8/qQ/gGloIZYCmYAZaCGWApmAGWghlgKZgBloIZ YCmYAZaC/e/aLZvXL6BKVL1RQ9cbD1nTaXGtieZq8L6D+yM01+yyhtVscojmelsDNLe03kZzg94B u96pFpo7gM2zG+/8MBfPvm9gKZgBloIZYCmYAZaCGWApmAGWghlgKZgBloIZYCnYiW+jXPr4PGpO TQ5m8IpsN1Wjw3Y1VavsK6QNoe5KA831/txHc81Fdr3uCmuKTWFjC34tlWqNDdJdYb2tPXZf+AGL JmvG3bp8+1iy5BtYCmaApWAGWApmgKVgBlgKZoClYAZYCmaApWAGWApWenvkjU/ZzqnxPjtdr73K mkTDXXY9ekog/WJai2znFFVvscZRf4ftpmotse+PNo4ebA/R3BLcAUbRBtiwz56DKnx1jWGDrgOf 0/Wnl9HcJ699ix5B38BSMAMsBTPAUjADLAUzwFIwAywFM8BSMAMsBTPAUrDq5jXWnKImY9Zc2Xh2 tczbVnZ+76O5Vpc1ZqjphO3iGsGG0BHc2UV14K6rWr3c3/L9++zUwaLF7ktPRaQef2YFzdG/gzo6 Yv/fLmyy+QaWghlgKZgBloIZYCmYAZaCGWApmAGWghlgKZgBloKVvhPr7ZsvoarJ3TsP0PXorqbV JxfR3O5d1uhpL7NdV/xURGYyYtdb2eigucMpa/6MB6wp1lllDaH+DtudRTVa7P/RXGQ7xaYj1hgc 7rG5Cbxe0Waf79Z7P7kTS5p3BlgKZoClYAZYCmaApWAGWApmgKVgBlgKZoClYKU3scr21ucvoioR bf4U8PS/zjJrHBUt1hSbTdnpeodwbu/eCM111lpobgB3P9HTHenfu/HcGpqrwlVh27/10NxjZ5bQ 3B+/3kNzX33wy7FkyTewFMwAS8EMsBTMAEvBDLAUzABLwQywFMwAS8EMsBTsxDexynbxw3Oo07NQ Y19NrWC/gStPsB1We3+xRlmtYI2yCjztcDKEpyzu01MWmS7csbV8ijXK6GmR11//bi6efd/AUjAD LAUzwFIwAywFM8BSMAMsBTPAUjADLAUzwFKwuWijHKfNaxdQ6ehwxrpJy+ttNLd1h+1+msHTCadD drreU2dPo7lRf4zmagXbKfbZm9/7rD6Eb2ApmAGWghlgKZgBloIZYCmYAZaCGWApmAGWghlgKZjt lhPmyjcv03VSyO4OO8Vwd3tQ5m0rX1752WfrEfANLAUzwFIwAywFM8BSMAMsBTPAUjADLAUzwFIw AywF+xskAukuVl0skAAAAABJRU5ErkJggg== "
|
||||||
|
id="image3075-2"
|
||||||
|
x="60"
|
||||||
|
y="407.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4600-7"
|
||||||
|
d="m 60,477.36218 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 50,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewerdocs/design/cube_parts.png"
|
||||||
|
inkscape:export-xdpi="300"
|
||||||
|
inkscape:export-ydpi="300" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(375,2.6171874e-6)"
|
||||||
|
id="g3996-1">
|
||||||
|
<image
|
||||||
|
width="120"
|
||||||
|
height="180"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAC0CAYAAABfTugdAAAABHNCSVQICAgIfAhkiAAABPtJREFU eJztnbFPnHUchw94oQfHAdcrpdiiKWKrDjbRLh100Zq4ODo5mnQzMXZwNtE/wMEE4x9gapxM2kWX Jp1QYiKtjaaVllaEItwdUA64Uv+Fz4BiH59n/uTNe3nuu3zy/f3erpI8kXx4+a3HSa77n34ROVgU DEfBcBQMR8FwFAxHwXAUDEfBcLoO+gX+L3xw6XzUPPUNl6Pn7T3YjXJOMBwFw1EwHAXDUTAcBcNR MBwFw1EwnOKgX+C/ynufn4uap0p1IHrekcl6lNuaXY9ya1c7Uc4JhqNgOAqGo2A4CoajYDgKhqNg OAqGg9nJ+ujK21HztNpei57XudqOcuXaoSjXvps1VOWHE1Gu/qgV5ZxgOAqGo2A4CoajYDgKhqNg OAqGo2A4B7aTdeGrV6PmqV6pRc/bWH8Y5ToLO1nuRtZk7bzeF+XOVyej3G/tZpTr6slKSCcYjoLh KBiOguEoGI6C4SgYjoLhKBhOvJP17vTLUfNUPVqNnjc5nO0eDQ5XotwPl3+KcnszWUM1VT0c5Zrt bNeqNpI1cnfuP4hyr53JmjEnGI6C4SgYjoLhKBiOguEoGI6C4SgYTnHhm2w36lHvXvTA9Zns1NtS aTnK3erfinLNK9mpwWp/dhpwrWcjytUmXohyz49k91qVOllupZXtoDnBcBQMR8FwFAxHwXAUDEfB cBQMR8Fwit257Si4MZftHo2u9Ue5hXJUoJV6m9mO0tlTJ6LcTidr5Iru7P2G+7Lm6fr8YpTb3MpO Px6tZ7tvTjAcBcNRMBwFw1EwHAXDUTAcBcNRMJyi91rWnDzdlzUnQ09luVNhk9UZz04hFt3Zf7Wc XWtVWmpkO1nthfkoV61kpyTbPVkz1trMTkk6wXAUDEfBcBQMR8FwFAxHwXAUDEfBcIqxdLcnvGG8 s5s1Y8efGY9yN35finLbO1kDdHtxNcodOzwY5Y6MjkS54cFylFtpbUa5+fB3OMFwFAxHwXAUDEfB cBQMR8FwFAxHwXCKk+PZTeR//JXtKDW3svubfrx5L8oNhQ1Qcz1rgF45fTzKjY1kO1SVgez9Zn+9 H+XKfdnnJMdqWdPmBMNRMBwFw1EwHAXDUTAcBcNRMBwFwykam9k9WWuNZpQbH82++bfRzna3xmvZ zlijGI1yXd3ZjfQ9RdYo/Xz7zyhXDY81LjezRq46kN1c7wTDUTAcBcNRMBwFw1EwHAXDUTAcBcMp llYaUXDqxZei3LEia4pmb2U3uQ8c6olyu/MLUa53bDjKzd68G+VaW7tR7o2zz0W5vcfZ/WEXv/wu Ou7pBMNRMBwFw1EwHAXDUTAcBcNRMBwFwykG62NRcL2VNV7X5+9EuWol+8bh3PxylNtuZzegrzSy /3RX/WSUe3Y3+ybhO598nV00ts84wXAUDEfBcBQMR8FwFAxHwXAUDEfBcIp7i9lu1LmpepRbKWf3 RjU2tqLcidGhKHd6Irvvq1nKnvfx9KUDaZ72GycYjoLhKBiOguEoGI6C4SgYjoLhKBhO8eaZ7Ab0 1Y3sPq2e8BuHfUV2arCzF8VK709/j2ie9hsnGI6C4SgYjoLhKBiOguEoGI6C4SgYTrHUzHajVlvZ NwnrIwNR7tMvrtk8/Qs4wXAUDEfBcBQMR8FwFAxHwXAUDEfBcIpfwnuoPvt2xubpCcQJhqNgOAqG o2A4CoajYDgKhqNgOAqG8zen7OzZX1IkEwAAAABJRU5ErkJggg== "
|
||||||
|
id="image3991-0"
|
||||||
|
x="185"
|
||||||
|
y="482.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4604-3"
|
||||||
|
d="m 305,482.36218 -10,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -10,0 0,120"
|
||||||
|
style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(380,2.6171874e-6)"
|
||||||
|
id="g3928-7">
|
||||||
|
<image
|
||||||
|
width="120"
|
||||||
|
height="180"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAC0CAYAAABfTugdAAAABHNCSVQICAgIfAhkiAAABRJJREFU eJzt3ctrXGUch/FzZk7mlrlkpumkiW1iE1prcWMg0I2hQgttsYIbdeFlZ2kFN10IQje6UBdFcCe4 dC9YsEjbhUopQitIaxo0lLEJ5jKZJJPpTCb3/gNdfBdpo1+ez/rHpOmTd/PjPWfCiz+e3g4El89c DZU5/LfEdvsfgKeLwOYIbI7A5ghsjsDmCGyOwOYIbC6KLUiLrODjn85Kg2v1tvR5X715jc3YM8AJ NkdgcwQ2R2BzBDZHYHMENkdgcwQ2F374zglpQ1UcTUofmB7OSXNz96vSXLPRkua+vXCLzdgTcILN Edgcgc0R2ByBzRHYHIHNEdgcgc2Fl94alTZZtXhe+sB2ZlKaS/VrG6/24qo0F42mpLlSqijNfXH6 B4vNGCfYHIHNEdgcgc0R2ByBzRHYHIHNEdhclEhoC5t929rdqEO5QWnuRmpOmtsY055WDPZrf6ut A9rv8cmV17UNX3NR+rxv3v51VzZjnGBzBDZHYHMENkdgcwQ2R2BzBDZHYHPRUN8eafCXPx5Icx3J uDRXeqjdtSp0d0tzEz8vSHPNEWksePHMkDRXrGt31c5/H5M2Y425hvR53537XdqMcYLNEdgcgc0R 2ByBzRHYHIHNEdgcgc2FX58/JW1Ymi1t83RkYJ80N7YUSXOLk+PSXG1Zu7vVWNF+j+7XeqS57Epa mpsJtPeCpUYy0lx8XTubnGBzBDZHYHMENkdgcwQ2R2BzBDZHYHNRZzohDU7PL0tzf1ampbliuVea C3PaZiff2SnNJSLtb/re1X+lucXCAWmuu609XFgd1+6WZV/S3jPGCTZHYHMENkdgcwQ2R2BzBDZH YHMENhctN7W7TPG49reQjLS7VrOTFWlufVv7uT1dWWkuFN9W9fIRbUMVhdKVtqDe1t40n17Q/v8a N9ekOU6wOQKbI7A5ApsjsDkCmyOwOQKbI7C5qDKt3QFKJTqkuWJee9ouFtNWSlPVJWnut/sPpbnB 3pI0l0xoG6WjB7WnEGsT2l21bJf2HYyZzaQ0xwk2R2BzBDZHYHMENkdgcwQ2R2BzBDYXDfRod4Xq 4t2tyoz2XX7Dh5+T5spd2tOFs0tNaW5a3IxlO7VN0Z3xKWluc2tLmitktd+3r6zdQeMEmyOwOQKb I7A5ApsjsDkCmyOwOQKbi7a2tafjHq1oT7OVC9r7qu4+mJHmDu3XvrswjGt3xqKy9p2EvTltc7e2 vinNZVPi+8iq2h25TEr7fTnB5ghsjsDmCGyOwOYIbI7A5ghsjsDmxLdGBcHn778qrbyGxM3T9dt/ S3P5tLax6e/Vfm5lti7NHXtB+w7Ge//MS3PDQ3uluZmNvDRX+WtMmuMEmyOwOQKbI7A5ApsjsDkC myOwOQKbkzdZO+3L916RNmPzHdp3HKZb2ncN1uotaW5PQXvKb2NTu9PWaK5Ic/3PD0hzq+JdME6w OQKbI7A5ApsjsDkCmyOwOQKbI7C5Xdtk7bTPzr0hrZQKwbL0eY/a2qZoqqp9Xi6tvcn9aL/2Rvpb EzVpjhNsjsDmCGyOwOYIbI7A5ghsjsDmCGzOZpO10z5997i0GVuoa2+az4jvyRrs0zZZpSzfXYiA wPYIbI7A5ghsjsDmCGyOwOYIbI5N1jNy+YOT0masvbohfV4prz39yAk2R2BzBDZHYHMENkdgcwQ2 R2BzBDbHJut/6qOzI9JmjBNsjsDmCGyOwOYIbI7A5ghsjsDmCGzuMUU/3WGHZptAAAAAAElFTkSu QmCC "
|
||||||
|
id="image3143-1"
|
||||||
|
x="60"
|
||||||
|
y="482.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4602-3"
|
||||||
|
d="m 60,482.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 10,0 0,120"
|
||||||
|
style="fill:none;stroke:#ff7e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(830,-4.9999974)"
|
||||||
|
id="g3080-9-1">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="120"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAB4CAYAAADMtn8nAAAABHNCSVQICAgIfAhkiAAABLZJREFU eJzt3T2LXHUYhvGZnTnzuq8mqwtGRBsLIbVFCAQESwVtAhFcEAsRQQJpBSsFg4VJI0IIEUsL0UIs 1Fj5DWxiI+JmWZPJzu7M7Lzs+gVSXOgxu/d4/eqHc2Znzz2nuXn+1Yrm2qWr54/I3BeXb1f/68+i 8i0c9weQ9M8ZYCmYAZaCGWApmAGWghlgKZgBloIZYCmYAZaC2b45YV59/wXUnKLqDfYbfeb502Xe tnL1la99th4B38BSMAMsBTPAUjADLAUzwFIwAywFM8BSMAMsBTPAUjDbMv/SxY/OoebU0SErWBXN Opo7GEzQ3GQwRXOtpQLNVRfKfWSKNvt7b777o8/qQ/gGloIZYCmYAZaCGWApmAGWghlgKZgBloIZ YCmYAZaC/e/aLZvXL6BKVL1RQ9cbD1nTaXGtieZq8L6D+yM01+yyhtVscojmelsDNLe03kZzg94B u96pFpo7gM2zG+/8MBfPvm9gKZgBloIZYCmYAZaCGWApmAGWghlgKZgBloIZYCnYiW+jXPr4PGpO TQ5m8IpsN1Wjw3Y1VavsK6QNoe5KA831/txHc81Fdr3uCmuKTWFjC34tlWqNDdJdYb2tPXZf+AGL JmvG3bp8+1iy5BtYCmaApWAGWApmgKVgBlgKZoClYAZYCmaApWAGWApWenvkjU/ZzqnxPjtdr73K mkTDXXY9ekog/WJai2znFFVvscZRf4ftpmotse+PNo4ebA/R3BLcAUbRBtiwz56DKnx1jWGDrgOf 0/Wnl9HcJ699ix5B38BSMAMsBTPAUjADLAUzwFIwAywFM8BSMAMsBTPAUrDq5jXWnKImY9Zc2Xh2 tczbVnZ+76O5Vpc1ZqjphO3iGsGG0BHc2UV14K6rWr3c3/L9++zUwaLF7ktPRaQef2YFzdG/gzo6 Yv/fLmyy+QaWghlgKZgBloIZYCmYAZaCGWApmAGWghlgKZgBloKVvhPr7ZsvoarJ3TsP0PXorqbV JxfR3O5d1uhpL7NdV/xURGYyYtdb2eigucMpa/6MB6wp1lllDaH+DtudRTVa7P/RXGQ7xaYj1hgc 7rG5Cbxe0Waf79Z7P7kTS5p3BlgKZoClYAZYCmaApWAGWApmgKVgBlgKZoClYKU3scr21ucvoioR bf4U8PS/zjJrHBUt1hSbTdnpeodwbu/eCM111lpobgB3P9HTHenfu/HcGpqrwlVh27/10NxjZ5bQ 3B+/3kNzX33wy7FkyTewFMwAS8EMsBTMAEvBDLAUzABLwQywFMwAS8EMsBTsxDexynbxw3Oo07NQ Y19NrWC/gStPsB1We3+xRlmtYI2yCjztcDKEpyzu01MWmS7csbV8ijXK6GmR11//bi6efd/AUjAD LAUzwFIwAywFM8BSMAMsBTPAUjADLAUzwFKwuWijHKfNaxdQ6ehwxrpJy+ttNLd1h+1+msHTCadD drreU2dPo7lRf4zmagXbKfbZm9/7rD6Eb2ApmAGWghlgKZgBloIZYCmYAZaCGWApmAGWghlgKZjt lhPmyjcv03VSyO4OO8Vwd3tQ5m0rX1752WfrEfANLAUzwFIwAywFM8BSMAMsBTPAUjADLAUzwFIw AywF+xskAukuVl0skAAAAABJRU5ErkJggg== "
|
||||||
|
id="image3075-2-9"
|
||||||
|
x="60"
|
||||||
|
y="407.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4600-7-4"
|
||||||
|
d="m 60,477.36218 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 50,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewerdocs/design/cube_parts.png"
|
||||||
|
inkscape:export-xdpi="300"
|
||||||
|
inkscape:export-ydpi="300" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(825,-19.999997)"
|
||||||
|
id="g3996-1-5">
|
||||||
|
<image
|
||||||
|
width="120"
|
||||||
|
height="180"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAC0CAYAAABfTugdAAAABHNCSVQICAgIfAhkiAAABPtJREFU eJztnbFPnHUchw94oQfHAdcrpdiiKWKrDjbRLh100Zq4ODo5mnQzMXZwNtE/wMEE4x9gapxM2kWX Jp1QYiKtjaaVllaEItwdUA64Uv+Fz4BiH59n/uTNe3nuu3zy/f3erpI8kXx4+a3HSa77n34ROVgU DEfBcBQMR8FwFAxHwXAUDEfBcLoO+gX+L3xw6XzUPPUNl6Pn7T3YjXJOMBwFw1EwHAXDUTAcBcNR MBwFw1EwnOKgX+C/ynufn4uap0p1IHrekcl6lNuaXY9ya1c7Uc4JhqNgOAqGo2A4CoajYDgKhqNg OAqGg9nJ+ujK21HztNpei57XudqOcuXaoSjXvps1VOWHE1Gu/qgV5ZxgOAqGo2A4CoajYDgKhqNg OAqGo2A4B7aTdeGrV6PmqV6pRc/bWH8Y5ToLO1nuRtZk7bzeF+XOVyej3G/tZpTr6slKSCcYjoLh KBiOguEoGI6C4SgYjoLhKBhOvJP17vTLUfNUPVqNnjc5nO0eDQ5XotwPl3+KcnszWUM1VT0c5Zrt bNeqNpI1cnfuP4hyr53JmjEnGI6C4SgYjoLhKBiOguEoGI6C4SgYTnHhm2w36lHvXvTA9Zns1NtS aTnK3erfinLNK9mpwWp/dhpwrWcjytUmXohyz49k91qVOllupZXtoDnBcBQMR8FwFAxHwXAUDEfB cBQMR8Fwit257Si4MZftHo2u9Ue5hXJUoJV6m9mO0tlTJ6LcTidr5Iru7P2G+7Lm6fr8YpTb3MpO Px6tZ7tvTjAcBcNRMBwFw1EwHAXDUTAcBcNRMJyi91rWnDzdlzUnQ09luVNhk9UZz04hFt3Zf7Wc XWtVWmpkO1nthfkoV61kpyTbPVkz1trMTkk6wXAUDEfBcBQMR8FwFAxHwXAUDEfBcIqxdLcnvGG8 s5s1Y8efGY9yN35finLbO1kDdHtxNcodOzwY5Y6MjkS54cFylFtpbUa5+fB3OMFwFAxHwXAUDEfB cBQMR8FwFAxHwXCKk+PZTeR//JXtKDW3svubfrx5L8oNhQ1Qcz1rgF45fTzKjY1kO1SVgez9Zn+9 H+XKfdnnJMdqWdPmBMNRMBwFw1EwHAXDUTAcBcNRMBwFwykam9k9WWuNZpQbH82++bfRzna3xmvZ zlijGI1yXd3ZjfQ9RdYo/Xz7zyhXDY81LjezRq46kN1c7wTDUTAcBcNRMBwFw1EwHAXDUTAcBcMp llYaUXDqxZei3LEia4pmb2U3uQ8c6olyu/MLUa53bDjKzd68G+VaW7tR7o2zz0W5vcfZ/WEXv/wu Ou7pBMNRMBwFw1EwHAXDUTAcBcNRMBwFwykG62NRcL2VNV7X5+9EuWol+8bh3PxylNtuZzegrzSy /3RX/WSUe3Y3+ybhO598nV00ts84wXAUDEfBcBQMR8FwFAxHwXAUDEfBcIp7i9lu1LmpepRbKWf3 RjU2tqLcidGhKHd6Irvvq1nKnvfx9KUDaZ72GycYjoLhKBiOguEoGI6C4SgYjoLhKBhO8eaZ7Ab0 1Y3sPq2e8BuHfUV2arCzF8VK709/j2ie9hsnGI6C4SgYjoLhKBiOguEoGI6C4SgYTrHUzHajVlvZ NwnrIwNR7tMvrtk8/Qs4wXAUDEfBcBQMR8FwFAxHwXAUDEfBcIpfwnuoPvt2xubpCcQJhqNgOAqG o2A4CoajYDgKhqNgOAqG8zen7OzZX1IkEwAAAABJRU5ErkJggg== "
|
||||||
|
id="image3991-0-9"
|
||||||
|
x="185"
|
||||||
|
y="482.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4604-3-5"
|
||||||
|
d="m 305,482.36218 -10,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -20,0 0,10 -10,0 0,120"
|
||||||
|
style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(830,-19.999997)"
|
||||||
|
id="g3928-7-2">
|
||||||
|
<image
|
||||||
|
width="120"
|
||||||
|
height="180"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAC0CAYAAABfTugdAAAABHNCSVQICAgIfAhkiAAABRJJREFU eJzt3ctrXGUch/FzZk7mlrlkpumkiW1iE1prcWMg0I2hQgttsYIbdeFlZ2kFN10IQje6UBdFcCe4 dC9YsEjbhUopQitIaxo0lLEJ5jKZJJPpTCb3/gNdfBdpo1+ez/rHpOmTd/PjPWfCiz+e3g4El89c DZU5/LfEdvsfgKeLwOYIbI7A5ghsjsDmCGyOwOYIbC6KLUiLrODjn85Kg2v1tvR5X715jc3YM8AJ NkdgcwQ2R2BzBDZHYHMENkdgcwQ2F374zglpQ1UcTUofmB7OSXNz96vSXLPRkua+vXCLzdgTcILN Edgcgc0R2ByBzRHYHIHNEdgcgc2Fl94alTZZtXhe+sB2ZlKaS/VrG6/24qo0F42mpLlSqijNfXH6 B4vNGCfYHIHNEdgcgc0R2ByBzRHYHIHNEdhclEhoC5t929rdqEO5QWnuRmpOmtsY055WDPZrf6ut A9rv8cmV17UNX3NR+rxv3v51VzZjnGBzBDZHYHMENkdgcwQ2R2BzBDZHYHPRUN8eafCXPx5Icx3J uDRXeqjdtSp0d0tzEz8vSHPNEWksePHMkDRXrGt31c5/H5M2Y425hvR53537XdqMcYLNEdgcgc0R 2ByBzRHYHIHNEdgcgc2FX58/JW1Ymi1t83RkYJ80N7YUSXOLk+PSXG1Zu7vVWNF+j+7XeqS57Epa mpsJtPeCpUYy0lx8XTubnGBzBDZHYHMENkdgcwQ2R2BzBDZHYHNRZzohDU7PL0tzf1ampbliuVea C3PaZiff2SnNJSLtb/re1X+lucXCAWmuu609XFgd1+6WZV/S3jPGCTZHYHMENkdgcwQ2R2BzBDZH YHMENhctN7W7TPG49reQjLS7VrOTFWlufVv7uT1dWWkuFN9W9fIRbUMVhdKVtqDe1t40n17Q/v8a N9ekOU6wOQKbI7A5ApsjsDkCmyOwOQKbI7C5qDKt3QFKJTqkuWJee9ouFtNWSlPVJWnut/sPpbnB 3pI0l0xoG6WjB7WnEGsT2l21bJf2HYyZzaQ0xwk2R2BzBDZHYHMENkdgcwQ2R2BzBDYXDfRod4Xq 4t2tyoz2XX7Dh5+T5spd2tOFs0tNaW5a3IxlO7VN0Z3xKWluc2tLmitktd+3r6zdQeMEmyOwOQKb I7A5ApsjsDkCmyOwOQKbi7a2tafjHq1oT7OVC9r7qu4+mJHmDu3XvrswjGt3xqKy9p2EvTltc7e2 vinNZVPi+8iq2h25TEr7fTnB5ghsjsDmCGyOwOYIbI7A5ghsjsDmxLdGBcHn778qrbyGxM3T9dt/ S3P5tLax6e/Vfm5lti7NHXtB+w7Ge//MS3PDQ3uluZmNvDRX+WtMmuMEmyOwOQKbI7A5ApsjsDkC myOwOQKbkzdZO+3L916RNmPzHdp3HKZb2ncN1uotaW5PQXvKb2NTu9PWaK5Ic/3PD0hzq+JdME6w OQKbI7A5ApsjsDkCmyOwOQKbI7C5Xdtk7bTPzr0hrZQKwbL0eY/a2qZoqqp9Xi6tvcn9aL/2Rvpb EzVpjhNsjsDmCGyOwOYIbI7A5ghsjsDmCGzOZpO10z5997i0GVuoa2+az4jvyRrs0zZZpSzfXYiA wPYIbI7A5ghsjsDmCGyOwOYIbI5N1jNy+YOT0masvbohfV4prz39yAk2R2BzBDZHYHMENkdgcwQ2 R2BzBDbHJut/6qOzI9JmjBNsjsDmCGyOwOYIbI7A5ghsjsDmCGzuMUU/3WGHZptAAAAAAElFTkSu QmCC "
|
||||||
|
id="image3143-1-0"
|
||||||
|
x="60"
|
||||||
|
y="482.36218" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4602-3-6"
|
||||||
|
d="m 60,482.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 10,0 0,120"
|
||||||
|
style="fill:none;stroke:#ff7e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 890,472.36218 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 50,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
id="path4600-6-4"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 760,527.36218 100,0"
|
||||||
|
id="path3386-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="990"
|
||||||
|
y="677.36218"
|
||||||
|
id="text4768"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4770"
|
||||||
|
x="990"
|
||||||
|
y="677.36218">24</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="1150"
|
||||||
|
y="537.36218"
|
||||||
|
id="text4768-3"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4770-6"
|
||||||
|
x="1150"
|
||||||
|
y="537.36218">24</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 890,662.36218 95,0"
|
||||||
|
id="path4797"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1035,662.36218 95,0"
|
||||||
|
id="path4799"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1170,542.36218 0,100"
|
||||||
|
id="path4801"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1170,507.36218 0,-100"
|
||||||
|
id="path4803"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1190,407.36218 -40,0"
|
||||||
|
id="path4805"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1150,642.36218 40,0"
|
||||||
|
id="path4807"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1130,642.36218 0,40"
|
||||||
|
id="path4809"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 890,642.36218 0,40"
|
||||||
|
id="path4811"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:32px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="685"
|
||||||
|
y="547.36218"
|
||||||
|
id="text4768-3-8"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4770-6-5"
|
||||||
|
x="685"
|
||||||
|
y="547.36218">25</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 705,562.36218 0,100"
|
||||||
|
id="path4801-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 705,512.36218 0,-100"
|
||||||
|
id="path4803-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 725,412.36218 -40,0"
|
||||||
|
id="path4805-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 680,662.36218 40,0"
|
||||||
|
id="path4807-5"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/design/cube_sides.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
docs/design/cube_top.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
docs/design/cubepositionimgs/cube_horizontal_offset.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
286
docs/design/cubepositionimgs/cube_horizontal_offset.svg
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
<?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="215.06604"
|
||||||
|
height="134.61028"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="cube_horizontal_offset.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/cubepositionimgs/cube_horizontal_offset.png"
|
||||||
|
inkscape:export-xdpi="90.015251"
|
||||||
|
inkscape:export-ydpi="90.015251">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8284272"
|
||||||
|
inkscape:cx="196.05813"
|
||||||
|
inkscape:cy="47.86508"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:guide-bbox="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3755"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(182.57291,-428.70349)">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-137.07291"
|
||||||
|
y="443.54724"
|
||||||
|
id="text3412"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3414"
|
||||||
|
x="-137.07291"
|
||||||
|
y="443.54724">24</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -112.07291,438.54726 38.000003,0"
|
||||||
|
id="path3416"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -142.07291,438.54726 -40,0"
|
||||||
|
id="path3418"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -182.07291,433.54726 0,10"
|
||||||
|
id="path3420"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -74.072907,433.54726 0,10"
|
||||||
|
id="path3422"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
id="g3792"
|
||||||
|
transform="translate(18.966966,-155.2665)">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3792-6"
|
||||||
|
transform="translate(124.99998,-154.99999)">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021-0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-02"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-9"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-4"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3792-6-3"
|
||||||
|
transform="translate(293.46696,-178.96697)">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021-0-0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5-3"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-02-0"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-9-9"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-4-2"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3792-6-9"
|
||||||
|
transform="translate(293.46698,-126.43396)">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021-0-4"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5-6"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-02-9"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-9-2"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-4-24"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="208.42709"
|
||||||
|
y="466.31375"
|
||||||
|
id="text3772"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3774"
|
||||||
|
x="208.42709"
|
||||||
|
y="466.31375">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 222.42709,433.31377 0,12.99999"
|
||||||
|
id="path3776"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 400,4.6102753 10,0"
|
||||||
|
id="path3778"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 405,39.610275 0,17"
|
||||||
|
id="path3780"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 400,56.610275 10,0"
|
||||||
|
id="path3782"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect4554"
|
||||||
|
width="106.39062"
|
||||||
|
height="104.99996"
|
||||||
|
x="-73.963531"
|
||||||
|
y="457.31375" />
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#00ff00;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect4554-4"
|
||||||
|
width="106.39062"
|
||||||
|
height="104.99996"
|
||||||
|
x="94.036476"
|
||||||
|
y="485.31375" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/design/cubepositionimgs/cube_measurements.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
418
docs/design/cubepositionimgs/cube_measurements.svg
Normal file
@@ -0,0 +1,418 @@
|
|||||||
|
<?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="215.06604"
|
||||||
|
height="134.61028"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="cube_measurements.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/cubepositionimgs/cube_measurements.png"
|
||||||
|
inkscape:export-xdpi="100.02"
|
||||||
|
inkscape:export-ydpi="100.02">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Mend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0.0"
|
||||||
|
refX="0.0"
|
||||||
|
id="Arrow1Mend"
|
||||||
|
style="overflow:visible;">
|
||||||
|
<path
|
||||||
|
id="path3809"
|
||||||
|
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
|
||||||
|
transform="scale(0.4) rotate(180) translate(10,0)" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8284272"
|
||||||
|
inkscape:cx="88.787808"
|
||||||
|
inkscape:cy="39.780751"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:guide-bbox="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3755"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(182.57291,-428.70349)">
|
||||||
|
<g
|
||||||
|
id="g3792-6"
|
||||||
|
transform="translate(11.46694,-150.49998)"
|
||||||
|
style="fill:none">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021-0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-02"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-9"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-4"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5-2"
|
||||||
|
d="m -81.53991,541.58027 -53.033,-26.2665 -53.03301,26.2665"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:1.4" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-222.57291"
|
||||||
|
y="523.31378"
|
||||||
|
id="text4492"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4494"
|
||||||
|
x="-222.57291"
|
||||||
|
y="523.31378">24</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-146.57291"
|
||||||
|
y="453.31375"
|
||||||
|
id="text4496"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4498"
|
||||||
|
x="-146.57291"
|
||||||
|
y="453.31375">24</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -25,99.610275 0,38.000005"
|
||||||
|
id="path4500"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -207.57291,506.31377 0,-45.00001"
|
||||||
|
id="path4502"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -212.57291,461.31377 10,0"
|
||||||
|
id="path4504"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -30,137.61028 10,0"
|
||||||
|
id="path4506"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -148.57291,446.31376 -40,0"
|
||||||
|
id="path4529"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -6,12.610275 0,10"
|
||||||
|
id="path4531"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -119.57292,446.31377 38.000006,0"
|
||||||
|
id="path4529-9"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -81.57291,441.31377 0,10"
|
||||||
|
id="path4531-8"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-72.572906"
|
||||||
|
y="559.31378"
|
||||||
|
id="text4554"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556"
|
||||||
|
x="-72.572906"
|
||||||
|
y="559.31378">6</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-77.572906"
|
||||||
|
y="519.31378"
|
||||||
|
id="text4554-3"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556-1"
|
||||||
|
x="-77.572906"
|
||||||
|
y="519.31378">12</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-72.572906"
|
||||||
|
y="482.31375"
|
||||||
|
id="text4554-5"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556-7"
|
||||||
|
x="-72.572906"
|
||||||
|
y="482.31375">6</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -67.57291,566.31377 0,-6"
|
||||||
|
id="path4588"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -67.57291,545.31374 0,-23"
|
||||||
|
id="path4590"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -67.57291,506.31377 0,-23.00001"
|
||||||
|
id="path4592"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -67.57291,469.31376 0,-8"
|
||||||
|
id="path4594"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 110,32.610275 10,0"
|
||||||
|
id="path4596"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -72.57291,488.31377 10,0"
|
||||||
|
id="path4596-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -72.57291,540.31377 10,0"
|
||||||
|
id="path4596-7"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -72.57291,566.31377 10,0"
|
||||||
|
id="path4596-72"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:0.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="m 182,85.610275 63,0"
|
||||||
|
id="path4763"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<g
|
||||||
|
id="g3792-6-5"
|
||||||
|
transform="translate(145.46694,-150.49998)"
|
||||||
|
style="fill:none">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021-0-9"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5-3"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-02-3"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-9-0"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-4-6"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5-2-5"
|
||||||
|
d="m 52.46009,540.58027 -53.033,-26.2665 -53.03301,26.2665"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:1.4" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="57.42709"
|
||||||
|
y="491.31375"
|
||||||
|
id="text4554-3-5"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556-1-0"
|
||||||
|
x="57.42709"
|
||||||
|
y="491.31375">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 67.42709,533.31378 0,-41"
|
||||||
|
id="path4590-2"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 67.42709,477.31377 0,-16"
|
||||||
|
id="path4592-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 62.42709,461.31377 10,0"
|
||||||
|
id="path4596-1-8"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 62.42709,514.31377 10,0"
|
||||||
|
id="path4596-7-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="57.42709"
|
||||||
|
y="548.31378"
|
||||||
|
id="text4554-3-5-3"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556-1-0-0"
|
||||||
|
x="57.42709"
|
||||||
|
y="548.31378">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 67.42709,566.31376 0,-15"
|
||||||
|
id="path4590-2-7"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 62.42709,566.31377 10,0"
|
||||||
|
id="path4596-7-3-7"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-117.57291"
|
||||||
|
y="588.31378"
|
||||||
|
id="text4554-3-0"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556-1-4"
|
||||||
|
x="-117.57291"
|
||||||
|
y="588.31378">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -117.57291,583.31377 -32,0"
|
||||||
|
id="path4529-0"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -134.57291,578.31378 0,10"
|
||||||
|
id="path4531-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -81.57291,583.31377 -16,0"
|
||||||
|
id="path4529-0-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -81.57291,578.31377 0,10"
|
||||||
|
id="path4531-6-9"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:16px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-170.57291"
|
||||||
|
y="588.31378"
|
||||||
|
id="text4554-3-0-2"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4556-1-4-1"
|
||||||
|
x="-170.57291"
|
||||||
|
y="588.31378">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -171.57291,583.31377 -17,0"
|
||||||
|
id="path4529-0-8"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -188.57291,578.31378 0,10"
|
||||||
|
id="path4531-6-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/design/cubepositionimgs/cube_neighbors.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
207
docs/design/cubepositionimgs/cube_neighbors.svg
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
<?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="215.06604"
|
||||||
|
height="134.61028"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="cube_neighbors.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/cubepositionimgs/cube_horizontal_offset.png"
|
||||||
|
inkscape:export-xdpi="90.015251"
|
||||||
|
inkscape:export-ydpi="90.015251">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Mend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0.0"
|
||||||
|
refX="0.0"
|
||||||
|
id="Arrow1Mend"
|
||||||
|
style="overflow:visible;">
|
||||||
|
<path
|
||||||
|
id="path3809"
|
||||||
|
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
|
||||||
|
transform="scale(0.4) rotate(180) translate(10,0)" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="4.0000001"
|
||||||
|
inkscape:cx="40.272617"
|
||||||
|
inkscape:cy="42.648017"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:guide-bbox="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3755"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(182.57291,-428.70349)">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:0.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="m 3,54.610275 0,-40"
|
||||||
|
id="path4245"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:0.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
|
d="m 56,27.610275 54,0"
|
||||||
|
id="path4449"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(-182.57291,428.70349)" />
|
||||||
|
<g
|
||||||
|
id="g3792"
|
||||||
|
transform="translate(19.466963,-155.49999)">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2"
|
||||||
|
d="m -146.03985,717.34675 -53.03301,-26.2665"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m -126.57291,484.31376 0,-41"
|
||||||
|
id="path4245-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
id="g3792-6"
|
||||||
|
transform="translate(72.46694,-129.49998)"
|
||||||
|
style="fill:none">
|
||||||
|
<rect
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
y="771.25336"
|
||||||
|
x="608.28253"
|
||||||
|
height="59.181324"
|
||||||
|
width="59.181324"
|
||||||
|
id="rect3021-0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-5"
|
||||||
|
d="m -93.006853,691.08025 -53.032997,26.2665 -53.03301,-26.2665"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-02"
|
||||||
|
d="m -199.03985,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-9"
|
||||||
|
d="m -93.039853,638.81375 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-4"
|
||||||
|
d="m -146.03985,664.81375 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#00ff00;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="rect3793"
|
||||||
|
width="106.06067"
|
||||||
|
height="105.15029"
|
||||||
|
x="-126.60065"
|
||||||
|
y="482.87625" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
|
||||||
|
d="m -179.57291,443.31377 52,0"
|
||||||
|
id="path3795"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-167.57291"
|
||||||
|
y="438.31375"
|
||||||
|
id="text4241"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4243"
|
||||||
|
x="-167.57291"
|
||||||
|
y="438.31375">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
|
||||||
|
d="m -72.57291,456.31377 0,25"
|
||||||
|
id="path4265"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-67.572906"
|
||||||
|
y="473.31375"
|
||||||
|
id="text4451"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4453"
|
||||||
|
x="-67.572906"
|
||||||
|
y="473.31375">6</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.9 KiB |
BIN
docs/design/cubepositionimgs/cube_stacking.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
183
docs/design/cubepositionimgs/cube_stacking.svg
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
<?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="198.70314"
|
||||||
|
height="159.68738"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="cube_stacking.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/cubepositionimgs/cube_stacking.png"
|
||||||
|
inkscape:export-xdpi="144.41595"
|
||||||
|
inkscape:export-ydpi="144.41595">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8284271"
|
||||||
|
inkscape:cx="48.782895"
|
||||||
|
inkscape:cy="101.25197"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:guide-bbox="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3755"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(-33.675018,-237.79787)">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="179.47775"
|
||||||
|
y="272.98526"
|
||||||
|
id="text4396-7"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4398-45"
|
||||||
|
x="179.47775"
|
||||||
|
y="272.98526">12</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 192.0422,258.29789 0,-19.99994"
|
||||||
|
id="path4400-5"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 187.0422,238.2979 10,0"
|
||||||
|
id="path4402-7"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 192.0422,290.98525 0,-16.68735"
|
||||||
|
id="path4406-4"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 187.0422,290.98523 10,0"
|
||||||
|
id="path4408-91"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
id="g3832"
|
||||||
|
transform="translate(-165,167)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4838"
|
||||||
|
transform="translate(-297.99998,125.53302)">
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 1;stroke-dashoffset:0;marker-start:none"
|
||||||
|
d="m 471.51075,192.25175 -53.033,-26.2665 -53.03301,26.2665"
|
||||||
|
id="rect3021-2-1-5"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccc" />
|
||||||
|
<g
|
||||||
|
id="g3832-0"
|
||||||
|
transform="translate(133,-11.000002)">
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect3021-8"
|
||||||
|
width="59.181324"
|
||||||
|
height="59.181324"
|
||||||
|
x="299.48941"
|
||||||
|
y="-19.084835"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
id="rect3021-2-1"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
id="path3041-02"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
id="path3041-4-2"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
id="path3041-0-9"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:#00ff02;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
id="rect4847"
|
||||||
|
width="106"
|
||||||
|
height="105.71874"
|
||||||
|
x="67.477753"
|
||||||
|
y="290.98526" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.1 KiB |
BIN
docs/design/cuberenderimgs/chunk_height.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
4240
docs/design/cuberenderimgs/chunk_height.svg
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
docs/design/cuberenderimgs/chunk_perspective.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
2104
docs/design/cuberenderimgs/chunk_perspective.svg
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
docs/design/cuberenderimgs/chunk_topdown.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
1869
docs/design/cuberenderimgs/chunk_topdown.svg
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
docs/design/cuberenderimgs/chunk_width.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
2210
docs/design/cuberenderimgs/chunk_width.svg
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
docs/design/cuberenderimgs/cube_stack128.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
490
docs/design/cuberenderimgs/cube_stack128.svg
Normal file
@@ -0,0 +1,490 @@
|
|||||||
|
<?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="436.54492"
|
||||||
|
height="484.69528"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="cube_stack128.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/cuberenderimgs/cube_stack128.png"
|
||||||
|
inkscape:export-xdpi="90.016075"
|
||||||
|
inkscape:export-ydpi="90.016075">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.4142136"
|
||||||
|
inkscape:cx="194.46598"
|
||||||
|
inkscape:cy="191.56651"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
showborder="false"
|
||||||
|
inkscape:guide-bbox="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3755"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(144.30527,-229.28993)">
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="path8485"
|
||||||
|
sodipodi:cx="185"
|
||||||
|
sodipodi:cy="305.95663"
|
||||||
|
sodipodi:rx="5"
|
||||||
|
sodipodi:ry="5"
|
||||||
|
d="m 190,305.95663 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
|
||||||
|
transform="matrix(0.5,0,0,0.5,-5.055293,308.5069)" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="path8485-1"
|
||||||
|
sodipodi:cx="185"
|
||||||
|
sodipodi:cy="305.95663"
|
||||||
|
sodipodi:rx="5"
|
||||||
|
sodipodi:ry="5"
|
||||||
|
d="m 190,305.95663 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
|
||||||
|
transform="matrix(0.5,0,0,0.5,-5.055293,323.5069)" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="path8485-1-5"
|
||||||
|
sodipodi:cx="185"
|
||||||
|
sodipodi:cy="305.95663"
|
||||||
|
sodipodi:rx="5"
|
||||||
|
sodipodi:ry="5"
|
||||||
|
d="m 190,305.95663 c 0,2.76143 -2.23858,5 -5,5 -2.76142,0 -5,-2.23857 -5,-5 0,-2.76142 2.23858,-5 5,-5 2.76142,0 5,2.23858 5,5 z"
|
||||||
|
transform="matrix(0.5,0,0,0.5,-5.055293,338.5069)" />
|
||||||
|
<g
|
||||||
|
id="g3832"
|
||||||
|
transform="translate(-198.53304,165.96697)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4838"
|
||||||
|
transform="translate(-331.53302,124.49999)">
|
||||||
|
<g
|
||||||
|
id="g3832-0"
|
||||||
|
transform="translate(133,-11.000002)">
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect3021-8"
|
||||||
|
width="59.181324"
|
||||||
|
height="59.181324"
|
||||||
|
x="299.48941"
|
||||||
|
y="-19.084835"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
id="rect3021-2-1"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
id="path3041-02"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
id="path3041-4-2"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
id="path3041-0-9"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3832-5"
|
||||||
|
transform="translate(-198.53304,215.96697)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-7"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-41"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-8"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-5"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3832-9"
|
||||||
|
transform="translate(-198.53306,433.49997)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-75"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-3"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-88"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-3"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4838-1"
|
||||||
|
transform="translate(-331.53303,392.03299)">
|
||||||
|
<g
|
||||||
|
id="g3832-0-9"
|
||||||
|
transform="translate(133,-11.000002)">
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
id="rect3021-8-6"
|
||||||
|
width="59.181324"
|
||||||
|
height="59.181324"
|
||||||
|
x="299.48941"
|
||||||
|
y="-19.084835"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
id="rect3021-2-1-4"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccc" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
id="path3041-02-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
id="path3041-4-2-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
id="path3041-0-9-3"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3832-5-8"
|
||||||
|
transform="translate(-198.53306,483.49997)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect3021-2-7-6"
|
||||||
|
d="m 417.85207,40.096489 0,59.181324 -59.18132,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.12123179;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1"
|
||||||
|
transform="matrix(0.89611053,0.44383096,-0.89611053,0.44383096,0,0)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-41-0"
|
||||||
|
d="m 232.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-4-8-4"
|
||||||
|
d="m 338.47775,150.98525 0,52"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3041-0-5-8"
|
||||||
|
d="m 285.47775,176.98525 0,53"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 2;stroke-dashoffset:0"
|
||||||
|
d="m 33.944724,419.01824 0,113"
|
||||||
|
id="path3362"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 2;stroke-dashoffset:0"
|
||||||
|
d="m 139.94472,419.01824 0,113"
|
||||||
|
id="path3362-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-57.055267"
|
||||||
|
y="244.48524"
|
||||||
|
id="text3228"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3230"
|
||||||
|
x="-57.055267"
|
||||||
|
y="244.48524">Y Offset</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -58.80527,249.23523 80,0"
|
||||||
|
id="path3232"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-27.411713"
|
||||||
|
y="294.48523"
|
||||||
|
id="text3234"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3236"
|
||||||
|
x="-27.411713"
|
||||||
|
y="294.48523">0</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-33.881439"
|
||||||
|
y="339.48523"
|
||||||
|
id="text3238"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3240"
|
||||||
|
x="-33.881439"
|
||||||
|
y="339.48523">12</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-33.954681"
|
||||||
|
y="404.48523"
|
||||||
|
id="text3242"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3244"
|
||||||
|
x="-33.954681"
|
||||||
|
y="404.48523">24</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-142.30527"
|
||||||
|
y="244.48524"
|
||||||
|
id="text3246"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3248"
|
||||||
|
x="-142.30527"
|
||||||
|
y="244.48524">Block #</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -143.80527,249.23523 80,0"
|
||||||
|
id="path3232-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-99.0914"
|
||||||
|
y="294.48523"
|
||||||
|
id="text3234-6"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3236-0"
|
||||||
|
x="-99.0914"
|
||||||
|
y="294.48523">0</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-99.272057"
|
||||||
|
y="339.48523"
|
||||||
|
id="text3289"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3291"
|
||||||
|
x="-99.272057"
|
||||||
|
y="339.48523">1</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-98.827728"
|
||||||
|
y="399.48523"
|
||||||
|
id="text3293"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3295"
|
||||||
|
x="-98.827728"
|
||||||
|
y="399.48523">2</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-112.0748"
|
||||||
|
y="664.48523"
|
||||||
|
id="text3297"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3299"
|
||||||
|
x="-112.0748"
|
||||||
|
y="664.48523">127</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-112.29941"
|
||||||
|
y="618.48523"
|
||||||
|
id="text3301"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3303"
|
||||||
|
x="-112.29941"
|
||||||
|
y="618.48523">126</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-112.05527"
|
||||||
|
y="564.48523"
|
||||||
|
id="text3305"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3307"
|
||||||
|
x="-112.05527"
|
||||||
|
y="564.48523">125</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-46.952728"
|
||||||
|
y="564.48523"
|
||||||
|
id="text3309"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3311"
|
||||||
|
x="-46.952728"
|
||||||
|
y="564.48523">1500</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-46.615807"
|
||||||
|
y="618.48523"
|
||||||
|
id="text3313"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3315"
|
||||||
|
x="-46.615807"
|
||||||
|
y="618.48523">1512</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-47.055267"
|
||||||
|
y="664.48523"
|
||||||
|
id="text3317"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3319"
|
||||||
|
x="-47.055267"
|
||||||
|
y="664.48523">1524</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="152.142"
|
||||||
|
y="483.9852"
|
||||||
|
id="text3321"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan3323"
|
||||||
|
x="152.142"
|
||||||
|
y="483.9852">12*128=1536</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 172.142,454.98522 0,-191.00001"
|
||||||
|
id="path3325"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 172.142,494.9852 0,192"
|
||||||
|
id="path3327"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 162.142,263.98521 20,0"
|
||||||
|
id="path3329"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 162.142,686.98521 20,0"
|
||||||
|
id="path3331"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 21 KiB |
364
docs/design/designdoc.rst
Normal file
@@ -0,0 +1,364 @@
|
|||||||
|
====================
|
||||||
|
Design Documentation
|
||||||
|
====================
|
||||||
|
So you'd like a technical overview of how The Overviewer works, huh? You've come
|
||||||
|
to the right place!
|
||||||
|
|
||||||
|
This document's scope does not cover the details of the code. The code is fairly
|
||||||
|
well commented and not difficult to understand. Instead, this document is
|
||||||
|
intended to give an explanation to how the Overviewer was designed, why certain
|
||||||
|
decisions were made, and how all the pieces fit together. Think of this document
|
||||||
|
as commenting on how all the high level pieces of the code work.
|
||||||
|
|
||||||
|
This document is probably a good read to anyone that wants to get involved in
|
||||||
|
Overviewer development.
|
||||||
|
|
||||||
|
So let's get started!
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
This page is still under construction
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
Background Info
|
||||||
|
===============
|
||||||
|
The Overviewer's task is to take Minecraft worlds and render them into a set of tiles that can be displayed with a Google Maps interface.
|
||||||
|
|
||||||
|
A Minecraft world extends indefinitely along the two horizontal axes, and are
|
||||||
|
exactly 128 units high. Minecraft worlds are made of cubes, where each slot in
|
||||||
|
the world's grid has a type that determines what it is (grass, stone, ...).
|
||||||
|
This makes worlds relatively uncomplicated to render, the Overviewer simply
|
||||||
|
determines what cubes to draw and where. Since everything in Minecraft is
|
||||||
|
aligned to a strict grid, placement and rendering decisions are completely
|
||||||
|
deterministic and can be performed in an iterative fashon.
|
||||||
|
|
||||||
|
The coordinate system for Minecraft has three axes. The X and Z axes are the
|
||||||
|
horizontal axes. They extend indefinitely towards both positive and negative
|
||||||
|
infinity. (There are practical limits, but no theoretical limits). The Y axis
|
||||||
|
extends from 0 to 127, which corresponds with the world height limit. Each
|
||||||
|
block in Minecraft has a coordinate address, e.g. the block at 15,78,-35 refers
|
||||||
|
to 15 along the X axis, -35 along the Z axis, and 78 units up from bedrock.
|
||||||
|
|
||||||
|
The world is divided up into *chunks*. A chunk is a 16 by 16 area of the world
|
||||||
|
that extends from bedrock to sky. In other words, a 16,128,16 "chunk" of the
|
||||||
|
world. Chunks also have an address, but in only 2 dimensions. To find the which
|
||||||
|
chunk a block is in, simply divide its X and Z coordinates by 16 and take the
|
||||||
|
floor.
|
||||||
|
|
||||||
|
Minecraft worlds are generated on-the-fly by the chunk. This means not all
|
||||||
|
chunks will exist. There is no pattern to chunk generation, the game simply
|
||||||
|
generates them as needed.
|
||||||
|
|
||||||
|
Chunks are stored on-disk in region files. A Minecraft region is a "region" of
|
||||||
|
32 by 32 chunks. Regions have their own address, and for a particular chunk one
|
||||||
|
can find its region by dividing its coordinates by 32 and taking the floor. A
|
||||||
|
region may contain all 1024 of its chunks, or only a subset of them, since not
|
||||||
|
all chunks may exist. The absence of a region file indicates none of its chunks
|
||||||
|
exist.
|
||||||
|
|
||||||
|
About the Rendering
|
||||||
|
===================
|
||||||
|
|
||||||
|
Minecraft worlds are rendered in an approximated Isometric projection at an
|
||||||
|
oblique angle. In the original design, the projection acts as if your eye is
|
||||||
|
infinitely far away looking down at the world at a 45 degree angle in the
|
||||||
|
South-East direction (now, the world can be rendered at any of the 4 oblique
|
||||||
|
directions).
|
||||||
|
|
||||||
|
.. image:: screenshot.png
|
||||||
|
:alt: A screenshot of Overviewer output
|
||||||
|
|
||||||
|
In order to render a Minecraft world, there are a few steps that need to happen.
|
||||||
|
These steps are explained in detail in the next few sections.
|
||||||
|
|
||||||
|
1. Render each block
|
||||||
|
2. Render the chunks from the blocks
|
||||||
|
3. Render the tiles of the map from the chunks
|
||||||
|
4. Shrink and combine the tiles for the other zoom levels
|
||||||
|
|
||||||
|
Block Rendering
|
||||||
|
===============
|
||||||
|
.. This section shows how each block is pre-rendered
|
||||||
|
|
||||||
|
The first step is rendering the blocks from the textures. Each block is "built"
|
||||||
|
from its textures into an image of a cube and cached in global variables of the
|
||||||
|
:mod:`textures` module.
|
||||||
|
|
||||||
|
Textures come in the size 16 by 16 (higher resolution textures are resized and
|
||||||
|
the process remains the same). In order to render a cube out of this, an `affine
|
||||||
|
transformation`_ is applied to the texture in order to transform it to the top,
|
||||||
|
left, and right faces of the cube.
|
||||||
|
|
||||||
|
.. image:: texturecubing.png
|
||||||
|
:alt: A texture gets rendered into a cube
|
||||||
|
|
||||||
|
.. _affine transformation: http://en.wikipedia.org/wiki/Affine_transformation
|
||||||
|
|
||||||
|
The result is an image of a cube that is 24 by 24 pixels in size. This
|
||||||
|
particular size for the cubes was chosen for an important reason: 24 is
|
||||||
|
divisible by 2 and by 4. This makes placement much easier. E.g. in order to draw
|
||||||
|
two cubes that are next to each other in the world, one is drawn exactly 12
|
||||||
|
pixels over and 6 pixels down from the other. All placements of the cubes happen
|
||||||
|
on exact pixel boundaries and no further resolution is lost beyond the initial
|
||||||
|
transformations.
|
||||||
|
|
||||||
|
The transformation happens in two stages. First, the texture is transformed for
|
||||||
|
the top of the cube. Then the texture is transformed for the left side of the
|
||||||
|
cube, which is mirrored for the right side of the cube.
|
||||||
|
|
||||||
|
Top Transformation
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The transformation for the top face of the cube is a simple `affine
|
||||||
|
transformation`_ from the original square texture. It is actually several affine
|
||||||
|
transformations: a re-size, a rotation, and a scaling; but since multiple affine
|
||||||
|
transformations can be chained together simply by multiplying the transformation
|
||||||
|
matrices together, only one transformation is actually done.
|
||||||
|
|
||||||
|
This can be seen in the function :func:`textures.transform_image`. It takes
|
||||||
|
these steps:
|
||||||
|
|
||||||
|
1. The texture is re-sized to 17 by 17 pixels. This is done because the diagonal
|
||||||
|
of a square with sides 17 is approximately 24, which is the target size for
|
||||||
|
the bounding box of the cube image. So when it's rotated, it will be the
|
||||||
|
correct width.
|
||||||
|
|
||||||
|
2. The image is rotated 45 degrees about its center.
|
||||||
|
|
||||||
|
3. The image is scaled on the vertical axis by a factor of 1/2.
|
||||||
|
|
||||||
|
This produces an image of size 24 by 12 as seen in the following sequence.
|
||||||
|
|
||||||
|
.. image:: texturetopsteps.png
|
||||||
|
:alt: The 4 steps for transforming a texture square into the top of the cube.
|
||||||
|
|
||||||
|
The final image, shown below, becomes the top of the cube.
|
||||||
|
|
||||||
|
.. image:: cube_top.png
|
||||||
|
:alt: Top of the cube
|
||||||
|
|
||||||
|
On the left is what will become the top of the block at actual size after the
|
||||||
|
transformation, the right is the same but blown up by a factor of 10 with no
|
||||||
|
interpolation to show the pixels.
|
||||||
|
|
||||||
|
Side Transformation
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The texture square is transformed for the sides of the cube in the
|
||||||
|
:func:`textures.transform_image_side` function. This is another `affine
|
||||||
|
transformation`_, but this time only two transformations are done: a re-size and
|
||||||
|
a shear.
|
||||||
|
|
||||||
|
1. First the texture is re-sized to 12 by 12 pixels. This is half the width of
|
||||||
|
24 so it will have the correct width after the shear.
|
||||||
|
|
||||||
|
2. The 12 by 12 square is sheared by a factor of 1.5 in the Y direction,
|
||||||
|
producing an image that is bounded by a 12 by 18 pixel square.
|
||||||
|
|
||||||
|
.. image:: texturesidesteps.png
|
||||||
|
:alt: Texture being sheared for the side of the cube.
|
||||||
|
|
||||||
|
This image is simply flipped along the horizontal axis for the other visible
|
||||||
|
side of the cube.
|
||||||
|
|
||||||
|
.. image:: cube_sides.png
|
||||||
|
:alt: The sides of the block
|
||||||
|
|
||||||
|
Again, shown on the left are the two sides of the block at actual size, the
|
||||||
|
right is scaled with no interpolation by a factor of 10 to show the pixels.
|
||||||
|
|
||||||
|
An Entire Cube
|
||||||
|
--------------
|
||||||
|
These three images, the top and two sides, are pasted into a single 24 by 24
|
||||||
|
pixel image to get the cube, as shown.
|
||||||
|
|
||||||
|
However, notice from the middle of the three images in the sequence below that
|
||||||
|
the images as transformed don't fit together exactly. There is some overlap when
|
||||||
|
put in the 24 by 24 box in which they must fit.
|
||||||
|
|
||||||
|
.. image:: cube_parts.png
|
||||||
|
:alt: How the cube parts fit together
|
||||||
|
|
||||||
|
There is one more complication. The cubes don't tessellate perfectly. This
|
||||||
|
diagram illustrates when a cube is positioned next to another. The lower cubes
|
||||||
|
are 18 pixels lower and 12 pixels to either side, which is half the width and
|
||||||
|
3/4 the height respectively.
|
||||||
|
|
||||||
|
.. image:: tessellation.png
|
||||||
|
:alt: Cubes don't tessellate perfectly
|
||||||
|
|
||||||
|
The solution is to manually touch up those 6 pixels. 3 pixels are added on the
|
||||||
|
upper left of each cube, 3 on the lower right. Therefore, they all line up
|
||||||
|
perfectly!
|
||||||
|
|
||||||
|
This is done at the end of :func:`textures._build_block`
|
||||||
|
|
||||||
|
.. image:: pixelfix.png
|
||||||
|
:alt: The 6 pixels manually added to each cube.
|
||||||
|
|
||||||
|
Other Cube Types
|
||||||
|
----------------
|
||||||
|
Many block types are not rendered as cubes. Fences, rails, doors, torches, and
|
||||||
|
many other types of blocks have custom rendering routines.
|
||||||
|
|
||||||
|
Chunk Rendering
|
||||||
|
===============
|
||||||
|
|
||||||
|
So now that each type of cube is rendered and cached in global variables within
|
||||||
|
the :mod:`textures` module, the next step is to use the data from a chunk of
|
||||||
|
the world to arrange these cubes on an image, rendering an entire chunk.
|
||||||
|
|
||||||
|
How big is a chunk going to be? A chunk is 16 by 16 blocks across, 128 blocks
|
||||||
|
high. The diagonal of a 16 by 16 grid is 16 squares. Observe.
|
||||||
|
|
||||||
|
This is the top-down view of a single chunk. It is essentially a 16 by 16 grid,
|
||||||
|
extending 128 units into the page.
|
||||||
|
|
||||||
|
.. image:: cuberenderimgs/chunk_topdown.png
|
||||||
|
:alt: A 16x16 square grid
|
||||||
|
|
||||||
|
Rendered at the appropriate perspective, we'll have something like this
|
||||||
|
(continued down for 128 layers).
|
||||||
|
|
||||||
|
.. image:: cuberenderimgs/chunk_perspective.png
|
||||||
|
:alt: Perspective rendering of the two top layers of a chunk.
|
||||||
|
|
||||||
|
Each of those cubes shown is where one of the pre-rendered cubes gets pasted.
|
||||||
|
This happens from back to front, bottom to top, so that the chunk gets drawn
|
||||||
|
correctly. Obviously if a cube in the back is pasted on the image after the
|
||||||
|
cubes in the front, it will be drawn on top of everything.
|
||||||
|
|
||||||
|
Cube Positioning
|
||||||
|
----------------
|
||||||
|
A single cube is drawn in a 24 by 24 square. Before we can construct a chunk out
|
||||||
|
of individual cubes, we must figure out how to position neighboring cubes.
|
||||||
|
|
||||||
|
First, to review, these are the measurements of a cube:
|
||||||
|
|
||||||
|
.. image:: cubepositionimgs/cube_measurements.png
|
||||||
|
:alt: The measurements of a cube
|
||||||
|
|
||||||
|
* The cube is bounded by a 24 by 24 pixel square.
|
||||||
|
|
||||||
|
* The side vertical edges are 12 pixels high.
|
||||||
|
|
||||||
|
* The top (and bottom) face of the cube takes 12 vertical pixels (and 24
|
||||||
|
horizontal pixels).
|
||||||
|
|
||||||
|
* The edges of the top and bottom of the cube take up 6 vertical pixels and 12
|
||||||
|
horizontal pixels each.
|
||||||
|
|
||||||
|
Two cubes that are neighbors after projection to the image (diagonally
|
||||||
|
neighboring in the world) have a horizontal offset of 24 pixels from each other,
|
||||||
|
as shown below on the left. This is mostly trivial, since the images don't end
|
||||||
|
up overlapping at all. Two cubes in the same configuration but rotated 90
|
||||||
|
degrees have some overlap in the image, and are only vertically offset by 12
|
||||||
|
pixels, as shown on the right.
|
||||||
|
|
||||||
|
.. image:: cubepositionimgs/cube_horizontal_offset.png
|
||||||
|
:alt: Two cubes horizontally positioned are offset by 24 pixels on the X axis.
|
||||||
|
|
||||||
|
Now for something slightly less trivial: two cubes that are stacked on top of
|
||||||
|
each other in the world. One is rendered lower on the vertical axis of the
|
||||||
|
image, but by how much?
|
||||||
|
|
||||||
|
.. image:: cubepositionimgs/cube_stacking.png
|
||||||
|
:alt: Two cubes stacked are offset in the image by 12 pixels.
|
||||||
|
|
||||||
|
Interestingly enough, due to the projection, this is exactly the same offset as
|
||||||
|
the situation above for diagonally neighboring cubes. The cube outlined in green
|
||||||
|
is drawn 12 pixels below the other one. Only the order that the cubes are drawn
|
||||||
|
is different.
|
||||||
|
|
||||||
|
And finally, what about cubes that are next to each other in the world ---
|
||||||
|
diagonally next to each other in the image?
|
||||||
|
|
||||||
|
.. image:: cubepositionimgs/cube_neighbors.png
|
||||||
|
:alt: Cubes that are neighbors are offset by 12 on the X and 6 on the Y
|
||||||
|
|
||||||
|
The cube outlined in green is offset on the horizontal axis by half the cube
|
||||||
|
width, or 12 pixels. It is offset on the vertical axis by half the width of the
|
||||||
|
cube's top, or 6 pixels. For the other 3 directions this could go, the
|
||||||
|
directions of the offsets are changed, but the amounts are the same.
|
||||||
|
|
||||||
|
The size of a chunk
|
||||||
|
-------------------
|
||||||
|
Now that we know how to place cubes relative to each other, we can begin to
|
||||||
|
construct a chunk.
|
||||||
|
|
||||||
|
Since the cube images are 24 by 24 pixels, and the diagonal of the 16 by 16 grid
|
||||||
|
is 16 squares, the width of one rendered chunk will be 384 pixels. Just
|
||||||
|
considering the top layer of the chunk:
|
||||||
|
|
||||||
|
.. image:: cuberenderimgs/chunk_width.png
|
||||||
|
:alt: Illustrating the width of a single chunk
|
||||||
|
|
||||||
|
Since cubes next to each other in the same "diagonal row" are offset by 24
|
||||||
|
pixels, this is trivially calculated.
|
||||||
|
|
||||||
|
The height is a bit more tricky to calculate. Let's start by calculating the
|
||||||
|
height of a single stack of 128 cubes.
|
||||||
|
|
||||||
|
If the top of a stack of cubes is at Y value 0, the 128th cube down must be
|
||||||
|
drawn (128-1)*12=1524 pixels below. However, that's not the end of the story.
|
||||||
|
The bottom cube has a height of 24 pixels, so the height of a rendered stack of
|
||||||
|
128 cube is 1548 pixels.
|
||||||
|
|
||||||
|
.. image:: cuberenderimgs/cube_stack128.png
|
||||||
|
:alt: A stack of 128 cubes takes 1560 vertical pixels to draw.
|
||||||
|
|
||||||
|
You can also calculate this by looking at the sides of the cubes, which don't
|
||||||
|
overlap at all. They are 12 pixels each, times 128 cubes in the stack, gives
|
||||||
|
1536 pixels. Add in the 6 pixels for the top cube and the 6 pixels for the
|
||||||
|
bottom cube to get the total height of 1548 pixels.
|
||||||
|
|
||||||
|
So what about the entire chunk? Let's take a look at the top and bottom few
|
||||||
|
layers of a chunk.
|
||||||
|
|
||||||
|
.. image:: cuberenderimgs/chunk_height.png
|
||||||
|
:alt: The highest and lowest positioned cubes in a chunk
|
||||||
|
|
||||||
|
Let's let the red cubes represent the stack from above. The one on the top we'll
|
||||||
|
define as position 0, with our vertical axis running positively downward (as is
|
||||||
|
the case in a lot of imaging library coordinate systems) Therefore, the bottom
|
||||||
|
red cube is at vertical offset 1524 below.
|
||||||
|
|
||||||
|
The green cube at the bottom most tip is the cube with the lowest vertical
|
||||||
|
placement on the image, so its offset plus 24 pixels for its height will be the
|
||||||
|
chunk height. Since the green cubes each have an offset of 12 pixels, add 15*12
|
||||||
|
pixels to get the offset of the lowest green cube: 1704.
|
||||||
|
|
||||||
|
So the total size of a chunk in pixels is 384 wide by 1728 tall. That's pretty
|
||||||
|
tall!
|
||||||
|
|
||||||
|
Tile Rendering
|
||||||
|
==============
|
||||||
|
.. Covers the placement of chunk images on a tile
|
||||||
|
|
||||||
|
Reading the Data Files
|
||||||
|
======================
|
||||||
|
..
|
||||||
|
Covers how to extract the blocks of each chunk from the region files. Also
|
||||||
|
covers the nbt file stuff.
|
||||||
|
|
||||||
|
Image Composition
|
||||||
|
=================
|
||||||
|
..
|
||||||
|
Covers the issues I had with PIL's image composition and why we needed
|
||||||
|
something fancier.
|
||||||
|
|
||||||
|
Multiprocessing
|
||||||
|
===============
|
||||||
|
..
|
||||||
|
Covers how the Overviewer utilizes multiple processors to render faster
|
||||||
|
|
||||||
|
Caching
|
||||||
|
=======
|
||||||
|
.. How the overviewer determines what needs to be rendered and what doesn't
|
||||||
|
|
||||||
|
Lighting
|
||||||
|
========
|
||||||
|
|
||||||
|
Cave Mode
|
||||||
|
=========
|
||||||
BIN
docs/design/pixelfix.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
205
docs/design/pixelfix.svg
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
<?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="240"
|
||||||
|
height="253"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="pixelfix.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/pixelfix.png"
|
||||||
|
inkscape:export-xdpi="61.016949"
|
||||||
|
inkscape:export-ydpi="61.016949">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path4162"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-5"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4162-9"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-4"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4162-94"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8"
|
||||||
|
inkscape:cx="23.820257"
|
||||||
|
inkscape:cy="139.37195"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3360"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(-1595,-435.86218)">
|
||||||
|
<image
|
||||||
|
y="442.39774"
|
||||||
|
x="1595"
|
||||||
|
id="image3090"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
zuh1+eUAAAAASUVORK5CYII=
|
||||||
|
"
|
||||||
|
height="240"
|
||||||
|
width="240" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 1040,245 20,0 0,20 -20,0 0,-20"
|
||||||
|
id="path4560"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(680,422.36218)" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 1760,647.36218 20,0 0,20 -20,0 0,-20"
|
||||||
|
id="path4560-0"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 1800,627.36218 20,0 0,20 -20,0 0,-20"
|
||||||
|
id="path4560-0-9"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 1700,437.36218 20,0 0,20 -20,0 0,-20"
|
||||||
|
id="path4560-0-5"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 1620,477.36218 20,0 0,20 -20,0 0,-20"
|
||||||
|
id="path4560-0-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 1660,457.36218 20,0 0,20 -20,0 0,-20"
|
||||||
|
id="path4560-0-61"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 9.0 KiB |
BIN
docs/design/screenshot.png
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
docs/design/tessellation.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
407
docs/design/tessellation.svg
Normal file
@@ -0,0 +1,407 @@
|
|||||||
|
<?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="1180"
|
||||||
|
height="430"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
sodipodi:docname="tessellation.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/tessellation.png"
|
||||||
|
inkscape:export-xdpi="61.016949"
|
||||||
|
inkscape:export-ydpi="61.016949">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path4162"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-5"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4162-9"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-4"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4162-94"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lend-5-3"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
id="path4162-9-2"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lend-3"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
id="path4162-0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lend-5-4"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend">
|
||||||
|
<path
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
id="path4162-9-4"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
style="overflow:visible"
|
||||||
|
id="Arrow1Lend-39"
|
||||||
|
refX="0"
|
||||||
|
refY="0"
|
||||||
|
orient="auto"
|
||||||
|
inkscape:stockid="Arrow1Lend">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
id="path4162-2" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.9899495"
|
||||||
|
inkscape:cx="515.07845"
|
||||||
|
inkscape:cy="224.85855"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3360"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<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(-680,-422.36218)">
|
||||||
|
<g
|
||||||
|
id="g5062">
|
||||||
|
<image
|
||||||
|
y="612.36218"
|
||||||
|
x="925"
|
||||||
|
id="image5005-4"
|
||||||
|
xlink:href="data:image/png;base64,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 "
|
||||||
|
height="240"
|
||||||
|
width="240" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3876"
|
||||||
|
d="m 925,792.36218 0,-120 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 1190,652.36218 150,0"
|
||||||
|
id="path3386"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1500,602.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
id="path3092-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1500,602.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 10,0 0,120"
|
||||||
|
id="path3874-1"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 1620,782.36218 0,-120 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
id="path3876-0"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
transform="translate(695,-5)"
|
||||||
|
id="g5026-8">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="240"
|
||||||
|
xlink:href="data:image/png;base64,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 "
|
||||||
|
id="image5005-0-8"
|
||||||
|
x="805"
|
||||||
|
y="427.36218" />
|
||||||
|
<g
|
||||||
|
id="g4907-9">
|
||||||
|
<g
|
||||||
|
transform="translate(-85,24.999994)"
|
||||||
|
id="layer1-3-8"
|
||||||
|
inkscape:label="Layer 1">
|
||||||
|
<g
|
||||||
|
id="g3080-9-1-8"
|
||||||
|
transform="translate(830,-4.9999974)" />
|
||||||
|
<g
|
||||||
|
id="g3996-1-5-8-1"
|
||||||
|
transform="translate(825,-19.999997)" />
|
||||||
|
<g
|
||||||
|
id="g3928-7-2-6"
|
||||||
|
transform="translate(830,-19.999997)" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 805,607.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
id="path3092-8"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(700,-10)"
|
||||||
|
id="g5035-4">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="240"
|
||||||
|
xlink:href="data:image/png;base64,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 "
|
||||||
|
id="image5005-40"
|
||||||
|
x="680"
|
||||||
|
y="612.36218" />
|
||||||
|
<g
|
||||||
|
id="g4897-5">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff7d00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 800,612.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 10,0 0,120"
|
||||||
|
id="path3874-6"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
transform="translate(-210,209.99999)"
|
||||||
|
id="layer1-3-1-0"
|
||||||
|
inkscape:label="Layer 1">
|
||||||
|
<g
|
||||||
|
id="g3080-9-1-2-0"
|
||||||
|
transform="translate(830,-4.9999974)" />
|
||||||
|
<g
|
||||||
|
id="g3996-1-5-8-3-4"
|
||||||
|
transform="translate(825,-19.999997)" />
|
||||||
|
<g
|
||||||
|
id="g3928-7-2-1-0"
|
||||||
|
transform="translate(830,-19.999997)" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(695,-10)"
|
||||||
|
id="g5062-7">
|
||||||
|
<image
|
||||||
|
y="612.36218"
|
||||||
|
x="925"
|
||||||
|
id="image5005-4-4"
|
||||||
|
xlink:href="data:image/png;base64,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 "
|
||||||
|
height="240"
|
||||||
|
width="240" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3876-9"
|
||||||
|
d="m 925,792.36218 0,-120 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
style="fill:none;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g5026">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="240"
|
||||||
|
xlink:href="data:image/png;base64,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 "
|
||||||
|
id="image5005-0"
|
||||||
|
x="805"
|
||||||
|
y="427.36218" />
|
||||||
|
<g
|
||||||
|
id="g4907">
|
||||||
|
<g
|
||||||
|
transform="translate(-85,24.999994)"
|
||||||
|
id="layer1-3"
|
||||||
|
inkscape:label="Layer 1">
|
||||||
|
<g
|
||||||
|
id="g3080-9-1"
|
||||||
|
transform="translate(830,-4.9999974)" />
|
||||||
|
<g
|
||||||
|
id="g3996-1-5-8"
|
||||||
|
transform="translate(825,-19.999997)" />
|
||||||
|
<g
|
||||||
|
id="g3928-7-2"
|
||||||
|
transform="translate(830,-19.999997)" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 805,607.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 20,0 0,-10 10,0"
|
||||||
|
id="path3092"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(1065,-35.000003)"
|
||||||
|
id="g3996-1-5" />
|
||||||
|
<g
|
||||||
|
id="g5035">
|
||||||
|
<image
|
||||||
|
width="240"
|
||||||
|
height="240"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
|
||||||
|
"
|
||||||
|
id="image5005"
|
||||||
|
x="680"
|
||||||
|
y="612.36218" />
|
||||||
|
<g
|
||||||
|
id="g4897">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#ff7d00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 800,612.36218 10,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 20,0 0,10 10,0 0,120"
|
||||||
|
id="path3874"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
transform="translate(-210,209.99999)"
|
||||||
|
id="layer1-3-1"
|
||||||
|
inkscape:label="Layer 1">
|
||||||
|
<g
|
||||||
|
id="g3080-9-1-2"
|
||||||
|
transform="translate(830,-4.9999974)" />
|
||||||
|
<g
|
||||||
|
id="g3996-1-5-8-3"
|
||||||
|
transform="translate(825,-19.999997)" />
|
||||||
|
<g
|
||||||
|
id="g3928-7-2-1"
|
||||||
|
transform="translate(830,-19.999997)" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 34 KiB |
BIN
docs/design/texturecubing.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
278
docs/design/texturecubing.svg
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
<?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"
|
||||||
|
id="svg3039"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
width="72.901756"
|
||||||
|
height="29.217323"
|
||||||
|
sodipodi:docname="texturecubing.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewerdocs/design/texturecubing.png"
|
||||||
|
inkscape:export-xdpi="374.43073"
|
||||||
|
inkscape:export-ydpi="374.43073">
|
||||||
|
<metadata
|
||||||
|
id="metadata3045">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs3043">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
id="namedview3041"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:zoom="13.911765"
|
||||||
|
inkscape:cx="31.959"
|
||||||
|
inkscape:cy="19.037262"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3039" />
|
||||||
|
<image
|
||||||
|
width="68"
|
||||||
|
height="24"
|
||||||
|
xlink:href="data:image/png;base64,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
|
||||||
|
AABJRU5ErkJggg==
|
||||||
|
"
|
||||||
|
id="image3047"
|
||||||
|
x="0.675354"
|
||||||
|
y="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 23.446285,12.004599 17.688134,0"
|
||||||
|
id="path3051"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="11.145916"
|
||||||
|
y="23.506634"
|
||||||
|
id="text4269"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271"
|
||||||
|
x="11.145916"
|
||||||
|
y="23.506634">16</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-0.43945312"
|
||||||
|
y="13.968932"
|
||||||
|
id="text4269-1"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6"
|
||||||
|
x="-0.43945312"
|
||||||
|
y="13.968932">16</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="52.828259"
|
||||||
|
y="28.110237"
|
||||||
|
id="text4269-1-0"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3"
|
||||||
|
x="52.828259"
|
||||||
|
y="28.110237">24</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="67.48555"
|
||||||
|
y="14.098909"
|
||||||
|
id="text4269-1-0-8"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3-5"
|
||||||
|
x="67.48555"
|
||||||
|
y="14.098909">24</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4430"
|
||||||
|
transform="translate(0,0.228726)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338"
|
||||||
|
d="m 16.874887,21.796439 4.574517,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4434">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1"
|
||||||
|
d="m 10.381613,22.025165 -4.5745172,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384"
|
||||||
|
transform="matrix(0,1,-1,0,7.6808557,3.3864966)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1"
|
||||||
|
d="m 5.4004719,5.4552459 -4.57451718,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0"
|
||||||
|
transform="matrix(0,-1,-1,0,7.6808557,20.67301)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1"
|
||||||
|
d="m 5.4004719,5.4552459 -4.57451718,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4430-7"
|
||||||
|
transform="translate(45.402428,4.8040079)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-13"
|
||||||
|
d="m 12.86345,21.796439 8.585954,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.27400067;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-4"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(36.920398,4.5752819)"
|
||||||
|
id="g4434-4">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-2"
|
||||||
|
d="m 14.991246,22.025165 -9.1841502,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.28338501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-4"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-6"
|
||||||
|
transform="matrix(0,1,-1,0,75.546286,-0.69995506)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-4"
|
||||||
|
d="m 10.749054,5.4552459 -9.92309928,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.29456493;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-9"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0-8"
|
||||||
|
transform="matrix(0,-1,-1,0,75.546286,25.032648)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1-4"
|
||||||
|
d="m 9.7989769,5.4552459 -8.97302218,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.28010878;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5-2"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/design/texturesidesteps.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
418
docs/design/texturesidesteps.svg
Normal file
@@ -0,0 +1,418 @@
|
|||||||
|
<?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"
|
||||||
|
id="svg3039"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
width="94.947617"
|
||||||
|
height="23.119883"
|
||||||
|
sodipodi:docname="texturesidesteps.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/texturesidesteps.png"
|
||||||
|
inkscape:export-xdpi="374.69849"
|
||||||
|
inkscape:export-ydpi="374.69849">
|
||||||
|
<metadata
|
||||||
|
id="metadata3045">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs3043">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-6"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-4"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-5"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-2"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-9"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-6"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-2"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-47"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
id="namedview3041"
|
||||||
|
showgrid="true"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:zoom="13.911765"
|
||||||
|
inkscape:cx="49.875962"
|
||||||
|
inkscape:cy="19.969891"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3039"
|
||||||
|
inkscape:snap-global="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3373"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 24.006832,9.5371928 12.368895,0"
|
||||||
|
id="path3051"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="10.951706"
|
||||||
|
y="19.636997"
|
||||||
|
id="text4269"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271"
|
||||||
|
x="10.951706"
|
||||||
|
y="19.636997">16</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-0.43945312"
|
||||||
|
y="9.1254139"
|
||||||
|
id="text4269-1"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6"
|
||||||
|
x="-0.43945312"
|
||||||
|
y="9.1254139">16</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4430"
|
||||||
|
transform="translate(0.11114287,-3.671025)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338"
|
||||||
|
d="m 16.874887,21.796439 4.574517,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4434"
|
||||||
|
transform="translate(-0.24654893,-3.899751)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1"
|
||||||
|
d="m 10.381613,22.025165 -4.5745172,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384"
|
||||||
|
transform="matrix(0,1,-1,0,8.0157928,-0.70054072)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1"
|
||||||
|
d="m 5.4004719,5.4552459 -4.57451718,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0"
|
||||||
|
transform="matrix(0,-1,-1,0,8.0157928,16.951369)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1"
|
||||||
|
d="m 7.1950618,5.4552459 -6.36910709,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="90.129257"
|
||||||
|
y="12.630968"
|
||||||
|
id="text4269-1-0-8"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3-5"
|
||||||
|
x="90.129257"
|
||||||
|
y="12.630968">18</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4384-6"
|
||||||
|
transform="matrix(0,1,-1,0,98.015795,-0.16545677)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-4"
|
||||||
|
d="m 8.7299582,5.4552459 -7.93353338,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.29456493;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-9"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0-8"
|
||||||
|
transform="matrix(0,-1,-1,0,98.015791,21.422651)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1-4"
|
||||||
|
d="m 7.5689781,5.4552459 -6.77729514,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.28010878;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5-2"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="38.85527"
|
||||||
|
y="10.125414"
|
||||||
|
id="text4269-1-5"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-2"
|
||||||
|
x="38.85527"
|
||||||
|
y="10.125414">12</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="49.200108"
|
||||||
|
y="18.765217"
|
||||||
|
id="text4269-0"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-5"
|
||||||
|
x="49.200108"
|
||||||
|
y="18.765217">12</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g3559"
|
||||||
|
transform="translate(-0.26288613,-2.161309)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-0"
|
||||||
|
d="m 55.575368,19.286723 3.248065,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-2"
|
||||||
|
d="m 58.794972,18.11768 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(39.795695,-4.899751)"
|
||||||
|
id="g4434-8">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-3"
|
||||||
|
d="m 9.2511678,22.025165 -3.4863155,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.22187975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-8"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3150"
|
||||||
|
transform="translate(0.52887687,-2.7706882)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-0"
|
||||||
|
d="m 41.03167,8.8477478 0,-3.9516456"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.23969571;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-91"
|
||||||
|
d="m 42.200713,4.908985 -2.388915,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0-9"
|
||||||
|
transform="matrix(0,-1,-1,0,47.015793,15.893638)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1-6"
|
||||||
|
d="m 4.5712133,5.4552459 -3.80298952,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2402081;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5-25"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 60.502945,9.2161088 12.368895,0"
|
||||||
|
id="path3051-5"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="80.560547"
|
||||||
|
y="23.046446"
|
||||||
|
id="text4269-0-5"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-5-0"
|
||||||
|
x="80.560547"
|
||||||
|
y="23.046446">12</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g3581"
|
||||||
|
transform="translate(-4.0958405,-0.34470495)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-0-6"
|
||||||
|
d="m 90.40832,21.975673 3.248065,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-2-0"
|
||||||
|
d="m 93.627924,20.80663 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(70.778863,-0.22515395)"
|
||||||
|
id="g4434-8-8">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-3-3"
|
||||||
|
d="m 9.2511678,22.025165 -3.4863155,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.22187975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-8-7"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<image
|
||||||
|
y="0.125414"
|
||||||
|
x="5.5605469"
|
||||||
|
id="image3521"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAlhJREFU
|
||||||
|
OI1tks9P02AYxz99IbjJBmtxaVFL6vBHlBgWSDwQSJYQE4Ih4eLBG/HswQMXb/wBxqgHLxrj/6AH
|
||||||
|
LyQkO0sYZwvDCm0drHXMUUxKPejbbMHv6cnzPj++3+f7KqufFhMhBHEcc3x8DEA2myUMQ/L5PJqm
|
||||||
|
EUUR7XabOI4RQhBFEUEQYJomQlEUOp0O+oDKlYtFzJzOjxffyWazdDod9vb2MHM6N4sWuVyOKIoY
|
||||||
|
HBxE13XOzs4QxgWNo1cumqbhtH0OTg4ByGQynLz9SbFY5DBuIYTg+sgY0bsWjUaD09NTmq89lEdz
|
||||||
|
t5ORyXmOausAGKtjeM+/ITHwOMfv920uPb3M4csDLEOl7gUAWIaK8ubJYuL4IaZeYHxU48PnL8xN
|
||||||
|
XsPxQ4C0GGBkcp68v4mpF6jWdrEMlX7HD6l7AaZewHabWIZ6rjHN1dbJGyqOH2IZKpVyCVEplwBw
|
||||||
|
/BDHDxmaWkoLVhamWVmYBqBSLqWxqRcAsN0m/XKDHGTvVxnWCzh+yMbWDqZeoO4F2G4zZSQlA/TN
|
||||||
|
3Lm61voVUfcC4iTB8UOGcxlkTigKd8dH00aJbdtFKMpfBvIoEjKW2rsbJVPJru/BvRtrAEJRqJRL
|
||||||
|
WIZK2I5Ynp0gThK2bZfl2YnUvjhJCNoncOs+ja/biO4NttvEdptUyiU2tnZS62S+m11r8yN1L0B5
|
||||||
|
9nAmqXtB6r08zviolg75H6QUAfR8nGptF8cPsd1mOqzuBVTKpfRvVMqllJUw/1kmi6RWxw97jtnN
|
||||||
|
pjvul8HKwnTP1qGpJeb2qz3eW4aavsulfwAjLTZzkwt4jwAAAABJRU5ErkJggg==
|
||||||
|
"
|
||||||
|
height="16"
|
||||||
|
width="16" />
|
||||||
|
<image
|
||||||
|
y="2.1254139"
|
||||||
|
x="45.560547"
|
||||||
|
id="image3521-0"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAlhJREFU OI1tks9P02AYxz99IbjJBmtxaVFL6vBHlBgWSDwQSJYQE4Ih4eLBG/HswQMXb/wBxqgHLxrj/6AH LyQkO0sYZwvDCm0drHXMUUxKPejbbMHv6cnzPj++3+f7KqufFhMhBHEcc3x8DEA2myUMQ/L5PJqm EUUR7XabOI4RQhBFEUEQYJomQlEUOp0O+oDKlYtFzJzOjxffyWazdDod9vb2MHM6N4sWuVyOKIoY HBxE13XOzs4QxgWNo1cumqbhtH0OTg4ByGQynLz9SbFY5DBuIYTg+sgY0bsWjUaD09NTmq89lEdz t5ORyXmOausAGKtjeM+/ITHwOMfv920uPb3M4csDLEOl7gUAWIaK8ubJYuL4IaZeYHxU48PnL8xN XsPxQ4C0GGBkcp68v4mpF6jWdrEMlX7HD6l7AaZewHabWIZ6rjHN1dbJGyqOH2IZKpVyCVEplwBw /BDHDxmaWkoLVhamWVmYBqBSLqWxqRcAsN0m/XKDHGTvVxnWCzh+yMbWDqZeoO4F2G4zZSQlA/TN 3Lm61voVUfcC4iTB8UOGcxlkTigKd8dH00aJbdtFKMpfBvIoEjKW2rsbJVPJru/BvRtrAEJRqJRL WIZK2I5Ynp0gThK2bZfl2YnUvjhJCNoncOs+ja/biO4NttvEdptUyiU2tnZS62S+m11r8yN1L0B5 9nAmqXtB6r08zviolg75H6QUAfR8nGptF8cPsd1mOqzuBVTKpfRvVMqllJUw/1kmi6RWxw97jtnN pjvul8HKwnTP1qGpJeb2qz3eW4aavsulfwAjLTZzkwt4jwAAAABJRU5ErkJggg== "
|
||||||
|
height="13"
|
||||||
|
width="13" />
|
||||||
|
<image
|
||||||
|
y="-44.076839"
|
||||||
|
x="88.404503"
|
||||||
|
id="image3521-0-7"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAlhJREFU OI1tks9P02AYxz99IbjJBmtxaVFL6vBHlBgWSDwQSJYQE4Ih4eLBG/HswQMXb/wBxqgHLxrj/6AH LyQkO0sYZwvDCm0drHXMUUxKPejbbMHv6cnzPj++3+f7KqufFhMhBHEcc3x8DEA2myUMQ/L5PJqm EUUR7XabOI4RQhBFEUEQYJomQlEUOp0O+oDKlYtFzJzOjxffyWazdDod9vb2MHM6N4sWuVyOKIoY HBxE13XOzs4QxgWNo1cumqbhtH0OTg4ByGQynLz9SbFY5DBuIYTg+sgY0bsWjUaD09NTmq89lEdz t5ORyXmOausAGKtjeM+/ITHwOMfv920uPb3M4csDLEOl7gUAWIaK8ubJYuL4IaZeYHxU48PnL8xN XsPxQ4C0GGBkcp68v4mpF6jWdrEMlX7HD6l7AaZewHabWIZ6rjHN1dbJGyqOH2IZKpVyCVEplwBw /BDHDxmaWkoLVhamWVmYBqBSLqWxqRcAsN0m/XKDHGTvVxnWCzh+yMbWDqZeoO4F2G4zZSQlA/TN 3Lm61voVUfcC4iTB8UOGcxlkTigKd8dH00aJbdtFKMpfBvIoEjKW2rsbJVPJru/BvRtrAEJRqJRL WIZK2I5Ynp0gThK2bZfl2YnUvjhJCNoncOs+ja/biO4NttvEdptUyiU2tnZS62S+m11r8yN1L0B5 9nAmqXtB6r08zviolg75H6QUAfR8nGptF8cPsd1mOqzuBVTKpfRvVMqllJUw/1kmi6RWxw97jtnN pjvul8HKwnTP1qGpJeb2qz3eW4aavsulfwAjLTZzkwt4jwAAAABJRU5ErkJggg== "
|
||||||
|
height="13"
|
||||||
|
width="15.011107"
|
||||||
|
transform="matrix(0.8660254,0.5,0,1,0,0)" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/design/texturetopsteps.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
524
docs/design/texturetopsteps.svg
Normal file
@@ -0,0 +1,524 @@
|
|||||||
|
<?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"
|
||||||
|
id="svg3039"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.1 r9760"
|
||||||
|
width="159.3623"
|
||||||
|
height="30.247282"
|
||||||
|
sodipodi:docname="texturetopsteps.svg"
|
||||||
|
inkscape:export-filename="/home/andrew/mc/overviewer/docs/design/texturetopsteps.png"
|
||||||
|
inkscape:export-xdpi="374.69849"
|
||||||
|
inkscape:export-ydpi="374.69849">
|
||||||
|
<metadata
|
||||||
|
id="metadata3045">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs3043">
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-6"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-4"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-5"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-2"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-9"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-6"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
<marker
|
||||||
|
inkscape:stockid="Arrow1Lend"
|
||||||
|
orient="auto"
|
||||||
|
refY="0"
|
||||||
|
refX="0"
|
||||||
|
id="Arrow1Lend-2"
|
||||||
|
style="overflow:visible">
|
||||||
|
<path
|
||||||
|
id="path3827-47"
|
||||||
|
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||||
|
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
|
||||||
|
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</marker>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1003"
|
||||||
|
id="namedview3041"
|
||||||
|
showgrid="true"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:zoom="9.8371034"
|
||||||
|
inkscape:cx="74.214175"
|
||||||
|
inkscape:cy="30.126028"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg3039"
|
||||||
|
inkscape:snap-global="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid3373"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 23.671895,12.815106 12.368895,0"
|
||||||
|
id="path3051"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="10.585018"
|
||||||
|
y="23.147282"
|
||||||
|
id="text4269"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271"
|
||||||
|
x="10.585018"
|
||||||
|
y="23.147282">16</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="-0.43945312"
|
||||||
|
y="13.329247"
|
||||||
|
id="text4269-1"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6"
|
||||||
|
x="-0.43945312"
|
||||||
|
y="13.329247">16</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4430"
|
||||||
|
transform="translate(-2.064209e-8,-0.41096005)">
|
||||||
|
<g
|
||||||
|
id="g3167"
|
||||||
|
transform="translate(-0.2237942,-0.23819646)">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 16.874887,21.796439 4.574517,0"
|
||||||
|
id="path4338"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
id="path4340"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4434"
|
||||||
|
transform="translate(-0.58148602,-0.87788255)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1"
|
||||||
|
d="m 10.381613,22.025165 -4.5745172,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384"
|
||||||
|
transform="matrix(0,1,-1,0,7.6808557,2.3213277)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1"
|
||||||
|
d="m 5.4004719,5.4552459 -4.57451718,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0"
|
||||||
|
transform="matrix(0,-1,-1,0,7.6808557,19.973238)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1"
|
||||||
|
d="m 5.4004719,5.4552459 -4.57451718,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="91.225609"
|
||||||
|
y="30.147282"
|
||||||
|
id="text4269-1-0"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3"
|
||||||
|
x="91.225609"
|
||||||
|
y="30.147282">24</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4430-7"
|
||||||
|
transform="translate(84.750792,7.1309714)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-13"
|
||||||
|
d="m 12.86345,21.796439 8.585954,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.27400067;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-4"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(75.443928,6.9022454)"
|
||||||
|
id="g4434-4">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-2"
|
||||||
|
d="m 12.988555,22.025165 -7.2118871,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.28338501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-4"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="106.66866"
|
||||||
|
y="15.147283"
|
||||||
|
id="text4269-1-0-8"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3-5"
|
||||||
|
x="106.66866"
|
||||||
|
y="15.147283">24</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4384-6"
|
||||||
|
transform="matrix(0,1,-1,0,114.68086,-0.67867225)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-4"
|
||||||
|
d="m 10.749054,5.4552459 -9.92309928,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.29456493;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-9"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0-8"
|
||||||
|
transform="matrix(0,-1,-1,0,114.68086,26.490551)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1-4"
|
||||||
|
d="m 9.7989769,5.4552459 -8.97302218,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.28010878;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5-2"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="38.520332"
|
||||||
|
y="13.949646"
|
||||||
|
id="text4269-1-5"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-2"
|
||||||
|
x="38.520332"
|
||||||
|
y="13.949646">17</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="50.180183"
|
||||||
|
y="23.822674"
|
||||||
|
id="text4269-0"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-5"
|
||||||
|
x="50.180183"
|
||||||
|
y="23.822674">17</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4430-9"
|
||||||
|
transform="translate(39.446396,0.35084349)">
|
||||||
|
<g
|
||||||
|
id="g3273"
|
||||||
|
transform="translate(1.3298097,0)">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2307175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 15.361801,21.796439 6.087603,0"
|
||||||
|
id="path4338-0"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
id="path4340-2"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(38.443928,0.29116049)"
|
||||||
|
id="g4434-8">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-3"
|
||||||
|
d="m 11.437254,22.025165 -5.6301582,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.22187975;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-8"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-04"
|
||||||
|
transform="matrix(0,1,-1,0,46.680856,2.539301)">
|
||||||
|
<g
|
||||||
|
id="g3269"
|
||||||
|
transform="translate(-1.2375804,0)">
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.23969573;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 8.4911248,5.4552459 -7.64556298,0"
|
||||||
|
id="path4338-1-1-0"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
id="path4340-1-1-91"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0-9"
|
||||||
|
transform="matrix(0,-1,-1,0,46.680856,20.941047)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1-6"
|
||||||
|
d="m 5.6238969,5.4552459 -4.83013261,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2402081;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5-25"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="translate(123.16392,-0.89789155)"
|
||||||
|
id="g4434-4-3">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-2-8"
|
||||||
|
d="m 15.061689,22.025165 -9.2675253,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.28338501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-4-5"
|
||||||
|
d="m 5.7816818,20.856122 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="138.72321"
|
||||||
|
y="22.759771"
|
||||||
|
id="text4269-1-0-1"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3-55"
|
||||||
|
x="138.72321"
|
||||||
|
y="22.759771">24</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4430-7-4"
|
||||||
|
transform="translate(132.75656,-0.64915655)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-13-9"
|
||||||
|
d="m 11.469049,21.796439 10.000003,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.27400067;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-4-8"
|
||||||
|
d="m 21.474818,20.627396 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:4px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
|
||||||
|
x="154.6709"
|
||||||
|
y="14.147283"
|
||||||
|
id="text4269-1-0-8-2"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4271-6-3-5-2"
|
||||||
|
x="154.6709"
|
||||||
|
y="14.147283">12</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4384-6-2"
|
||||||
|
transform="matrix(0,1,-1,0,162.68086,5.4158408)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-4-7"
|
||||||
|
d="m 4.2867589,5.4552459 -3.55531726,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-9-0"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4384-0-8-3"
|
||||||
|
transform="matrix(0,-1,-1,0,162.68086,18.883996)">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4338-1-1-1-4-4"
|
||||||
|
d="m 3.9921742,5.4552459 -3.25546137,0"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4340-1-1-5-2-6"
|
||||||
|
d="m 0.80054072,4.2862029 0,2.388915"
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 65.203951,12.815106 12.368895,0"
|
||||||
|
id="path3051-5"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;stroke:#000000;stroke-width:0.40000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow1Lend)"
|
||||||
|
d="m 112.78957,12.815106 12.3689,0"
|
||||||
|
id="path3051-0"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<image
|
||||||
|
y="3.1472826"
|
||||||
|
x="5.2256098"
|
||||||
|
id="image3147"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAu5JREFU
|
||||||
|
OI0l09tuG0UAgOF/Zsd79GFtx3WcpG2gbZAqVA4XlRBXiCseA4kH4SG44Ym4A9QqQiISTZNUbmI7
|
||||||
|
dna9p9nZGS76Dt8nfv7tByekwHaOOtcA+JGi2DVEgx7JJKStO+p9i+0sUgp03VFsa6aPByghQJct
|
||||||
|
g4MITwmEFOyWBX6kaEpDleecvJyQpAH5pmZ/XxMmCuXHOOtQ0TBg/jzFNB3v36xRPUkvVPRCj17o
|
||||||
|
4SlJUxr8SDE+Sqj3mmxV4UeKp1/NUFdv18QjH6/nMZiGGG3phR73N3ucdUgl8bYNfqwIYoUfKrwD
|
||||||
|
ifQEF38skY+/nOIszJ+NyNc1k+M+w1lEkPQ4/eYRX3x/RJU11LkmTgMmJ33qXGO0JU4DxC+//+hw
|
||||||
|
sLrMePLqgOXFjuEsAudQvke2roiHPlXe0rWWpmiJ0wDlS5Tv4X327aNfk3HI5DghW1UEsaLYNlgL
|
||||||
|
+aZGCIFpLU9fHZCkIc7B+DjBdg6jLTIZh2Srkrbu6FqLtY62MYyPEryeZDANWZyNef9mzfX5Bmcd
|
||||||
|
punYfSwZHyWoMtNMjhLSRUI48JFSUD5o/EiRHiaM5jG6MnStpT8OqHKNVBKc4+Z8gxo9itguCyYn
|
||||||
|
fTbXOThHOo+xneP+JidblQRxjyQNGM1jOmOZnQ6xxlJmGukpyeSkz+oyIz2MaUrD9MmA+5uc/jTi
|
||||||
|
7LsFu48Fg1nE8t8dQghuzjfoyhAPfeTutiQeBRTbBmdhOIt49+cdnpLosuXDP/eMFwnbD3va2lDs
|
||||||
|
GnRl0JXBtBb5/PUh2V2JaS3bZYGQgmjgU+Wa8kFz+dcK58BaEFIwOx2yOEvpjKVrO5TtLMk45O5d
|
||||||
|
RrPX1LlGegKE4OufTrn974HFi5T1VU6da4SAzfX+E2NfovJ1jbWOwTSkyjTPXh/S1oaH25LLv1fk
|
||||||
|
q5Jm/2lpmWnmn48YziI21znDWYRcX2U0RYtzUBct5UPDflMDsHiREqcBxy+nbJcFRluWFzuqXGM7
|
||||||
|
h7WO/wHXo4ijnKBzSAAAAABJRU5ErkJggg==
|
||||||
|
"
|
||||||
|
height="16"
|
||||||
|
width="16" />
|
||||||
|
<image
|
||||||
|
y="2.1472826"
|
||||||
|
x="44.225609"
|
||||||
|
id="image3147-9"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAu5JREFU OI0l09tuG0UAgOF/Zsd79GFtx3WcpG2gbZAqVA4XlRBXiCseA4kH4SG44Ym4A9QqQiISTZNUbmI7 dna9p9nZGS76Dt8nfv7tByekwHaOOtcA+JGi2DVEgx7JJKStO+p9i+0sUgp03VFsa6aPByghQJct g4MITwmEFOyWBX6kaEpDleecvJyQpAH5pmZ/XxMmCuXHOOtQ0TBg/jzFNB3v36xRPUkvVPRCj17o 4SlJUxr8SDE+Sqj3mmxV4UeKp1/NUFdv18QjH6/nMZiGGG3phR73N3ucdUgl8bYNfqwIYoUfKrwD ifQEF38skY+/nOIszJ+NyNc1k+M+w1lEkPQ4/eYRX3x/RJU11LkmTgMmJ33qXGO0JU4DxC+//+hw sLrMePLqgOXFjuEsAudQvke2roiHPlXe0rWWpmiJ0wDlS5Tv4X327aNfk3HI5DghW1UEsaLYNlgL +aZGCIFpLU9fHZCkIc7B+DjBdg6jLTIZh2Srkrbu6FqLtY62MYyPEryeZDANWZyNef9mzfX5Bmcd punYfSwZHyWoMtNMjhLSRUI48JFSUD5o/EiRHiaM5jG6MnStpT8OqHKNVBKc4+Z8gxo9itguCyYn fTbXOThHOo+xneP+JidblQRxjyQNGM1jOmOZnQ6xxlJmGukpyeSkz+oyIz2MaUrD9MmA+5uc/jTi 7LsFu48Fg1nE8t8dQghuzjfoyhAPfeTutiQeBRTbBmdhOIt49+cdnpLosuXDP/eMFwnbD3va2lDs GnRl0JXBtBb5/PUh2V2JaS3bZYGQgmjgU+Wa8kFz+dcK58BaEFIwOx2yOEvpjKVrO5TtLMk45O5d RrPX1LlGegKE4OufTrn974HFi5T1VU6da4SAzfX+E2NfovJ1jbWOwTSkyjTPXh/S1oaH25LLv1fk q5Jm/2lpmWnmn48YziI21znDWYRcX2U0RYtzUBct5UPDflMDsHiREqcBxy+nbJcFRluWFzuqXGM7 h7WO/wHXo4ijnKBzSAAAAABJRU5ErkJggg== "
|
||||||
|
height="18"
|
||||||
|
width="18" />
|
||||||
|
<image
|
||||||
|
y="-65.816315"
|
||||||
|
x="66.409378"
|
||||||
|
id="image3147-9-7"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAu5JREFU OI0l09tuG0UAgOF/Zsd79GFtx3WcpG2gbZAqVA4XlRBXiCseA4kH4SG44Ym4A9QqQiISTZNUbmI7 dna9p9nZGS76Dt8nfv7tByekwHaOOtcA+JGi2DVEgx7JJKStO+p9i+0sUgp03VFsa6aPByghQJct g4MITwmEFOyWBX6kaEpDleecvJyQpAH5pmZ/XxMmCuXHOOtQ0TBg/jzFNB3v36xRPUkvVPRCj17o 4SlJUxr8SDE+Sqj3mmxV4UeKp1/NUFdv18QjH6/nMZiGGG3phR73N3ucdUgl8bYNfqwIYoUfKrwD ifQEF38skY+/nOIszJ+NyNc1k+M+w1lEkPQ4/eYRX3x/RJU11LkmTgMmJ33qXGO0JU4DxC+//+hw sLrMePLqgOXFjuEsAudQvke2roiHPlXe0rWWpmiJ0wDlS5Tv4X327aNfk3HI5DghW1UEsaLYNlgL +aZGCIFpLU9fHZCkIc7B+DjBdg6jLTIZh2Srkrbu6FqLtY62MYyPEryeZDANWZyNef9mzfX5Bmcd punYfSwZHyWoMtNMjhLSRUI48JFSUD5o/EiRHiaM5jG6MnStpT8OqHKNVBKc4+Z8gxo9itguCyYn fTbXOThHOo+xneP+JidblQRxjyQNGM1jOmOZnQ6xxlJmGukpyeSkz+oyIz2MaUrD9MmA+5uc/jTi 7LsFu48Fg1nE8t8dQghuzjfoyhAPfeTutiQeBRTbBmdhOIt49+cdnpLosuXDP/eMFwnbD3va2lDs GnRl0JXBtBb5/PUh2V2JaS3bZYGQgmjgU+Wa8kFz+dcK58BaEFIwOx2yOEvpjKVrO5TtLMk45O5d RrPX1LlGegKE4OufTrn974HFi5T1VU6da4SAzfX+E2NfovJ1jbWOwTSkyjTPXh/S1oaH25LLv1fk q5Jm/2lpmWnmn48YziI21znDWYRcX2U0RYtzUBct5UPDflMDsHiREqcBxy+nbJcFRluWFzuqXGM7 h7WO/wHXo4ijnKBzSAAAAABJRU5ErkJggg== "
|
||||||
|
height="18"
|
||||||
|
width="18"
|
||||||
|
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
|
||||||
|
<image
|
||||||
|
y="-72.128647"
|
||||||
|
x="85.508072"
|
||||||
|
id="image3147-9-7-7"
|
||||||
|
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAu5JREFU OI0l09tuG0UAgOF/Zsd79GFtx3WcpG2gbZAqVA4XlRBXiCseA4kH4SG44Ym4A9QqQiISTZNUbmI7 dna9p9nZGS76Dt8nfv7tByekwHaOOtcA+JGi2DVEgx7JJKStO+p9i+0sUgp03VFsa6aPByghQJct g4MITwmEFOyWBX6kaEpDleecvJyQpAH5pmZ/XxMmCuXHOOtQ0TBg/jzFNB3v36xRPUkvVPRCj17o 4SlJUxr8SDE+Sqj3mmxV4UeKp1/NUFdv18QjH6/nMZiGGG3phR73N3ucdUgl8bYNfqwIYoUfKrwD ifQEF38skY+/nOIszJ+NyNc1k+M+w1lEkPQ4/eYRX3x/RJU11LkmTgMmJ33qXGO0JU4DxC+//+hw sLrMePLqgOXFjuEsAudQvke2roiHPlXe0rWWpmiJ0wDlS5Tv4X327aNfk3HI5DghW1UEsaLYNlgL +aZGCIFpLU9fHZCkIc7B+DjBdg6jLTIZh2Srkrbu6FqLtY62MYyPEryeZDANWZyNef9mzfX5Bmcd punYfSwZHyWoMtNMjhLSRUI48JFSUD5o/EiRHiaM5jG6MnStpT8OqHKNVBKc4+Z8gxo9itguCyYn fTbXOThHOo+xneP+JidblQRxjyQNGM1jOmOZnQ6xxlJmGukpyeSkz+oyIz2MaUrD9MmA+5uc/jTi 7LsFu48Fg1nE8t8dQghuzjfoyhAPfeTutiQeBRTbBmdhOIt49+cdnpLosuXDP/eMFwnbD3va2lDs GnRl0JXBtBb5/PUh2V2JaS3bZYGQgmjgU+Wa8kFz+dcK58BaEFIwOx2yOEvpjKVrO5TtLMk45O5d RrPX1LlGegKE4OufTrn974HFi5T1VU6da4SAzfX+E2NfovJ1jbWOwTSkyjTPXh/S1oaH25LLv1fk q5Jm/2lpmWnmn48YziI21znDWYRcX2U0RYtzUBct5UPDflMDsHiREqcBxy+nbJcFRluWFzuqXGM7 h7WO/wHXo4ijnKBzSAAAAABJRU5ErkJggg== "
|
||||||
|
height="14.179651"
|
||||||
|
width="14.179651"
|
||||||
|
transform="matrix(0.89761886,0.44077249,-0.89761886,0.44077249,0,0)" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 24 KiB |
23
docs/faq.rst
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
==========================
|
||||||
|
Frequently Asked Questions
|
||||||
|
==========================
|
||||||
|
|
||||||
|
**The full map doesn't display even when fully zoomed out!**
|
||||||
|
Are you using the :option:`-z` or :option:`--zoom <-z>` option on your commandline or
|
||||||
|
in settings.py? If so, try removing it, or increasing the value you set.
|
||||||
|
It's quite likely you don't need it at all. See the documentation for the
|
||||||
|
:option:`zoom <-z>` option.
|
||||||
|
|
||||||
|
**You've added a few feature, but it's not showing up on my map!**
|
||||||
|
Some new features will only show up in newly-rendered areas. Use the
|
||||||
|
:option:`--forcerender` option to update the entire map.
|
||||||
|
|
||||||
|
**How do I use this on CentOS 5?**
|
||||||
|
CentOS 5 comes with Python 2.4, but the Overviewer needs 2.6 or higher. See
|
||||||
|
the special instructions at :ref:`centos`
|
||||||
|
|
||||||
|
**The background color of the map is black, and I don't like it!**
|
||||||
|
You can change this by using the :option:`--bg-color` command line option, or
|
||||||
|
``bg_color`` in settings.py. See the :doc:`options` page for more
|
||||||
|
details.
|
||||||
|
|
||||||
109
docs/index.rst
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
..
|
||||||
|
Hey! You! Read these docs at http://docs.overviewer.org
|
||||||
|
Go there now!
|
||||||
|
|
||||||
|
========================
|
||||||
|
The Minecraft Overviewer
|
||||||
|
========================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
The Minecraft Overviewer is a command-line tool for rendering high-resolution
|
||||||
|
maps of Minecraft worlds. It generates a set of static html and image files and
|
||||||
|
uses the Google Maps API to display a nice interactive map.
|
||||||
|
|
||||||
|
The Overviewer has been in active development for over a year and has many
|
||||||
|
features, including day and night lighting, cave rendering, mineral overlays,
|
||||||
|
and many plugins for even more features! It is written mostly in Python with
|
||||||
|
critical sections in C as an extension module.
|
||||||
|
|
||||||
|
For a simple example of what your renders will look like, head over to `The
|
||||||
|
"Exmaple" Map <http://overviewer.org/example/>`_. For more user-contributed
|
||||||
|
examples, see `The Example Wiki Page <https://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples>`_.
|
||||||
|
|
||||||
|
Features
|
||||||
|
========
|
||||||
|
|
||||||
|
* Renders large resolution images of your world, such that you can zoom in and
|
||||||
|
see details
|
||||||
|
|
||||||
|
* Customizable textures! Pulls textures straight from your installed texture
|
||||||
|
pack!
|
||||||
|
|
||||||
|
* Outputs a Google Map powered interface that is memory efficient, both in
|
||||||
|
generating and viewing.
|
||||||
|
|
||||||
|
* Renders efficiently in parallel, using as many simultaneous processes as you
|
||||||
|
want!
|
||||||
|
|
||||||
|
* Utilizes caching to speed up subsequent renderings of your world.
|
||||||
|
|
||||||
|
* Throw the output directory up on a web server to share your Minecraft world
|
||||||
|
with everyone!
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
This is a quick list of what's required to run The Overviewer. It runs on
|
||||||
|
Windows, Mac, and Linux as long as you have these software packages installed:
|
||||||
|
|
||||||
|
* Python 2.6 or 2.7
|
||||||
|
|
||||||
|
* PIL (Python Imaging Library)
|
||||||
|
|
||||||
|
* Numpy
|
||||||
|
|
||||||
|
* Either a Minecraft Client installed or a terrain.png for the textures.
|
||||||
|
|
||||||
|
There are additional requirements for compiling it. More details are available
|
||||||
|
in either the :doc:`Building <building>` or :doc:`Installing <installing>` pages.
|
||||||
|
|
||||||
|
Getting Started
|
||||||
|
===============
|
||||||
|
|
||||||
|
The Overviewer works with Linux, Mac, and Windows! We provide Windows and Debian
|
||||||
|
built executables for your convenience. Find them as well as the full sources on
|
||||||
|
our `Github Homepage`_.
|
||||||
|
|
||||||
|
**If you are running Windows, Debian, or Ubuntu and would like the pre-built
|
||||||
|
packages and don't want to have to compile anything yourself**, head to the
|
||||||
|
:doc:`installing` page.
|
||||||
|
|
||||||
|
**If you would like to build the Overviewer from source yourself (it's not that
|
||||||
|
bad)**, head to the :doc:`Building <building>` page.
|
||||||
|
|
||||||
|
.. _Github Homepage: https://github.com/overviewer/Minecraft-Overviewer
|
||||||
|
|
||||||
|
Help
|
||||||
|
====
|
||||||
|
|
||||||
|
**IF YOU NEED HELP COMPILING OR RUNNING THE OVERVIEWER** feel free to chat with
|
||||||
|
us live in IRC: #overviewer on Freenode. There's usually someone on there that
|
||||||
|
can help you out. Not familiar with IRC? `Use the web client
|
||||||
|
<http://webchat.freenode.net/?channels=overviewer>`_.
|
||||||
|
|
||||||
|
If you think you've found a bug or other issue, file an issue on our `Issue
|
||||||
|
Tracker <https://github.com/overviewer/Minecraft-Overviewer/issues>`_. Filing or
|
||||||
|
commenting on an issue sends a notice to our IRC channel, so the response time
|
||||||
|
is often very good!
|
||||||
|
|
||||||
|
Documentation Contents
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
building
|
||||||
|
installing
|
||||||
|
running
|
||||||
|
options
|
||||||
|
faq
|
||||||
|
design/designdoc
|
||||||
|
|
||||||
|
|
||||||
|
Indices and tables
|
||||||
|
==================
|
||||||
|
|
||||||
|
* :ref:`genindex`
|
||||||
|
* :ref:`modindex`
|
||||||
|
* :ref:`search`
|
||||||
|
|
||||||
35
docs/installing.rst
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
==========
|
||||||
|
Installing
|
||||||
|
==========
|
||||||
|
|
||||||
|
This page is for installing the pre-compiled binary versions of the Overviewer.
|
||||||
|
If you have built the Overviewer from source yourself, head back to
|
||||||
|
:doc:`Building <building>`.
|
||||||
|
|
||||||
|
|
||||||
|
Windows
|
||||||
|
=======
|
||||||
|
Running Windows and don't want to compile the Overviewer? You've come to the
|
||||||
|
right place!
|
||||||
|
|
||||||
|
1. Head to the `Downloads <https://github.com/overviewer/Minecraft-Overviewer/downloads>`_ page and download the most recent Windows download for your architecture (32 or 64 bit).
|
||||||
|
|
||||||
|
2. For 32 bit you may need to install the `VC++ 2008 <http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf>`_ and `VC++ 2010 <http://www.microsoft.com/downloads/en/details.aspx?familyid=a7b7a05e-6de6-4d3a-a423-37bf0912db84>`_ redistributables.
|
||||||
|
|
||||||
|
For 64 bit, you'll want these instead: `VC++ 2008 <http://www.microsoft.com/downloads/en/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6>`_ and `VC++ 2010 <http://www.microsoft.com/download/en/details.aspx?id=14632>`_
|
||||||
|
|
||||||
|
3. That's it! Proceed with instructions on :doc:`Running <running>` the
|
||||||
|
Overviewer.
|
||||||
|
|
||||||
|
Debian / Ubuntu
|
||||||
|
===============
|
||||||
|
We provide an APT repository with pre-built Overviewer packages for Debian and
|
||||||
|
Ubuntu users. To do this, add the following line to your
|
||||||
|
``/etc/apt/sources.list``
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
deb http://overviewer.org/debian ./
|
||||||
|
|
||||||
|
Then run ``apt-get update`` and ``apt-get install minecraft-overviewer`` and
|
||||||
|
you're all set! See you at the :doc:`running` page!
|
||||||
699
docs/options.rst
Normal file
@@ -0,0 +1,699 @@
|
|||||||
|
====================
|
||||||
|
Settings and Options
|
||||||
|
====================
|
||||||
|
|
||||||
|
Overviewer settings can be set in two places, on the command line when you run
|
||||||
|
the overviewer, or in a settings file. You specify a settings file to use with
|
||||||
|
the :option:`--settings` command line option.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Any command line option can optionally be set in the settings file. However,
|
||||||
|
there are some settings that can only be set in the settings file.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Some options go by different names on the command line and the settings
|
||||||
|
file. Those are noted in bold below.
|
||||||
|
|
||||||
|
The first section of this document covers command line options. The second part
|
||||||
|
covers the more advanced ways of customizing The Overviewer using settings
|
||||||
|
files.
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:local:
|
||||||
|
|
||||||
|
Command line options
|
||||||
|
====================
|
||||||
|
|
||||||
|
.. cmdoption:: -h, --help
|
||||||
|
|
||||||
|
Shows the list of options and exits
|
||||||
|
|
||||||
|
.. cmdoption:: --advanced-help
|
||||||
|
|
||||||
|
Display help - including advanced options
|
||||||
|
|
||||||
|
Useful Options
|
||||||
|
--------------
|
||||||
|
|
||||||
|
.. cmdoption:: --settings <PATH>
|
||||||
|
|
||||||
|
Use this option to load settings from a file. For more information see the
|
||||||
|
`Settings File`_ section below.
|
||||||
|
|
||||||
|
**Not available in settings file (duh)**
|
||||||
|
|
||||||
|
.. cmdoption:: --north-direction <NORTH_DIRECTION>
|
||||||
|
|
||||||
|
Specifies which corner of the screen north will point to.
|
||||||
|
Valid options are: lower-left, upper-left, upper-right, lower-right.
|
||||||
|
If you do not specify this option, it will default to whatever direction
|
||||||
|
the existing map uses. For new maps, it defaults to lower-left for
|
||||||
|
historical reasons.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
We define cardinal directions by the sun in game; the sun rises in the
|
||||||
|
East and sets in the West.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``north_direction``
|
||||||
|
|
||||||
|
Format: One of the above strings.
|
||||||
|
|
||||||
|
.. cmdoption:: --rendermodes <MODE1>[,MODE2,...]
|
||||||
|
|
||||||
|
Use this option to specify which render mode to use, such as lighting or
|
||||||
|
night. Use :option:`--list-rendermodes` to get a list of available
|
||||||
|
rendermodes, and a short description of each. If you provide more than one
|
||||||
|
mode (separated by commas), Overviewer will render all of them at once, and
|
||||||
|
provide a toggle on the resulting map to switch between them.
|
||||||
|
|
||||||
|
If for some reason commas do not work for your shell (like if you're using
|
||||||
|
Powershell on Windows), you can also use a colon ':' or a forward slash '/'
|
||||||
|
to separate the modes.
|
||||||
|
|
||||||
|
Incomplete list of common render-modes for your convenience:
|
||||||
|
|
||||||
|
* normal
|
||||||
|
* lighting
|
||||||
|
* night
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
./overviewer.py --rendermodes=lighting,night /opt/server/world /opt/map
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``rendermode`` **Note the lack of an s**
|
||||||
|
|
||||||
|
Format: a list of strings.
|
||||||
|
|
||||||
|
Default: only render the normal mode
|
||||||
|
|
||||||
|
See the `Render Modes`_ section for more information.
|
||||||
|
|
||||||
|
.. cmdoption:: --list-rendermodes
|
||||||
|
|
||||||
|
List the available render modes, and a short description of each, and exit.
|
||||||
|
|
||||||
|
**Not available in settings file**
|
||||||
|
|
||||||
|
Less Useful Options
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
.. cmdoption:: --bg-color <color>
|
||||||
|
|
||||||
|
Configures the background color for the Google Map output. Specify in
|
||||||
|
#RRGGBB format.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``bg_color``
|
||||||
|
|
||||||
|
Format: A string in the above format.
|
||||||
|
|
||||||
|
Default: "#1A1A1A"
|
||||||
|
|
||||||
|
.. cmdoption:: --changelist <filename>
|
||||||
|
|
||||||
|
Outputs a list of changed tiles to the named file. If the file doesn't
|
||||||
|
exist, it is created. If it does exist, its contents are overwritten.
|
||||||
|
|
||||||
|
This could be useful for example in conjunction with a script to upload only
|
||||||
|
changed tiles to your web server.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``changelist``
|
||||||
|
|
||||||
|
Format: String (path plus filename)
|
||||||
|
|
||||||
|
Default: Not specified (no changelist outputted)
|
||||||
|
|
||||||
|
.. cmdoption:: --changelist-format <format>
|
||||||
|
|
||||||
|
Chooses absolute or relative paths for the output with the
|
||||||
|
:option:`--changelist` option. Valid values for format are "relative" or
|
||||||
|
"absolute".
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``changelist_format``
|
||||||
|
|
||||||
|
Format: A string (one of the above)
|
||||||
|
|
||||||
|
Default: "relative"
|
||||||
|
|
||||||
|
.. cmdoption:: --check-terrain
|
||||||
|
|
||||||
|
When this option appears on the command line, Overviewer prints the location
|
||||||
|
and hash of the terrain.png it will use, and then exits.
|
||||||
|
|
||||||
|
This is useful for debugging terrain.png path problems, especially with
|
||||||
|
:option:`--textures-path`. Use this to see what terrain.png your current
|
||||||
|
setup has selected.
|
||||||
|
|
||||||
|
See the :ref:`installing-textures` section for an example.
|
||||||
|
|
||||||
|
**Not available in settings file**
|
||||||
|
|
||||||
|
.. cmdoption:: --display-config
|
||||||
|
|
||||||
|
Display the configuration parameters and exit. Doesn't render the map. This
|
||||||
|
is useful to help validate a configuration setup.
|
||||||
|
|
||||||
|
**Not available in settings file**
|
||||||
|
|
||||||
|
.. cmdoption:: --forcerender
|
||||||
|
|
||||||
|
Force re-rendering the entire map (or the given regionlist). This
|
||||||
|
is an easier way to completely re-render without deleting the map.
|
||||||
|
|
||||||
|
This is useful if you change texture packs and want to re-render everything
|
||||||
|
in the new textures, or if you're changing the :option:`--north-direction`.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``forcerender``
|
||||||
|
|
||||||
|
Format: A boolean
|
||||||
|
|
||||||
|
Default: False
|
||||||
|
|
||||||
|
.. cmdoption:: --imgformat <format>
|
||||||
|
|
||||||
|
Specifies the output format for the tiles. Currently supported options are
|
||||||
|
"png" or "jpg".
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``imgformat``
|
||||||
|
|
||||||
|
Format: A string, either "png" or "jpg"
|
||||||
|
|
||||||
|
Default: "png"
|
||||||
|
|
||||||
|
.. cmdoption:: --imgquality <quality>
|
||||||
|
|
||||||
|
When using ":option:`--imgformat` jpg", this specifies the jpeg quality
|
||||||
|
parameter. This can help save disk space for larger maps.
|
||||||
|
|
||||||
|
For saving space with pngs, see :option:`--optimize-img`
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``imgquality``
|
||||||
|
|
||||||
|
Format: An integer 1-100
|
||||||
|
|
||||||
|
Default: 95
|
||||||
|
|
||||||
|
.. cmdoption:: --no-signs
|
||||||
|
|
||||||
|
Doesn't output signs to markers.js. This has the effect of disabling signs
|
||||||
|
on your map.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``nosigns``
|
||||||
|
|
||||||
|
Format: Boolean
|
||||||
|
|
||||||
|
Default: False
|
||||||
|
|
||||||
|
.. cmdoption:: --optimize-img <level>
|
||||||
|
|
||||||
|
When using ":option:`--imgformat` png" (the default), this performs file
|
||||||
|
size optimizations on the output. The level parameter is an integer
|
||||||
|
specifying one of the following:
|
||||||
|
|
||||||
|
1. Run pngcrush on all tiles
|
||||||
|
|
||||||
|
2. Run pngcrush plus advdef on all tiles
|
||||||
|
|
||||||
|
3. Run pngcrush plus advdef with more aggressive settings.
|
||||||
|
|
||||||
|
These options may double the time or worse it takes to render your map, and
|
||||||
|
can be expected to give around 19-23% reduction in file size.
|
||||||
|
|
||||||
|
These options also require the corresponding program(s) installed and in
|
||||||
|
your system path ($PATH or %PATH% environment variable)
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``optimizeimg``
|
||||||
|
|
||||||
|
Format: an integer
|
||||||
|
|
||||||
|
Default: not set (no optimization)
|
||||||
|
|
||||||
|
.. cmdoption:: -p <procs>, --processes <procs>
|
||||||
|
|
||||||
|
On multi-cored or multi-processor machines, The Overviewer will perform its
|
||||||
|
work on *all* cores by default. If you want to manually specify how many
|
||||||
|
workers to run in parallel, use this option.
|
||||||
|
|
||||||
|
Example to run 5 worker processes in parallel::
|
||||||
|
|
||||||
|
overviewer.py -p 5 <Path to World> <Output Directory>
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``procs``
|
||||||
|
|
||||||
|
Format: an integer.
|
||||||
|
|
||||||
|
Default: ``multiprocessing.cpu_count()``
|
||||||
|
|
||||||
|
.. cmdoption:: -q, --quiet
|
||||||
|
|
||||||
|
Prints less output. You can specify this multiple times.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``quiet``
|
||||||
|
|
||||||
|
Format: an integer
|
||||||
|
|
||||||
|
Default: 0
|
||||||
|
|
||||||
|
.. cmdoption:: --regionlist <regionlist>
|
||||||
|
|
||||||
|
Use this option to specify manually a list of regions to consider for
|
||||||
|
updating. In normal operation, every chunk in every region is checked for
|
||||||
|
update and if necessary, re-rendered. With this option, only the chunks in
|
||||||
|
the specified regions are checked.
|
||||||
|
|
||||||
|
This option should name a file containing, 1 per line, the path to the
|
||||||
|
region files to be considered for update.
|
||||||
|
|
||||||
|
It's up to you to build such a list. On Linux or Mac, try using the "find"
|
||||||
|
command. You could, for example, output all region files that are older than
|
||||||
|
a certain date. Or perhaps you can incrementally update your map by passing
|
||||||
|
in a subset of regions each time. It's up to you!
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``regionlist``
|
||||||
|
|
||||||
|
Format: A string representing the region list file.
|
||||||
|
|
||||||
|
Default: Scan all region files.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
See sample.settings.py for an example on how to build a region list
|
||||||
|
file.
|
||||||
|
|
||||||
|
.. cmdoption:: --skip-js
|
||||||
|
|
||||||
|
Skip the generation and output of markers.js and regions.js to the output
|
||||||
|
directory.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``skipjs``
|
||||||
|
|
||||||
|
Format: Boolean
|
||||||
|
|
||||||
|
Default: False
|
||||||
|
|
||||||
|
.. cmdoption:: --textures-path <path>
|
||||||
|
|
||||||
|
Use this option to specify an alternate terrain.png to use for textures when
|
||||||
|
rendering a world. ``path`` specifies the **containing directory** of
|
||||||
|
terrain.png.
|
||||||
|
|
||||||
|
The Overviewer will look for terrain.png in the following places in this
|
||||||
|
order: path specified by this option, the program's directory, the
|
||||||
|
overviewer_core/data/textures directory within the source directory, the
|
||||||
|
default textures that come with Minecraft if it's installed.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
If you installed Overviewer from the Debian package or chose to install
|
||||||
|
the overviewer from source (``python setup.py install``), then there
|
||||||
|
isn't a source directory; this option may be necessary to specify
|
||||||
|
non-default textures.
|
||||||
|
|
||||||
|
If you're having trouble getting The Overviewer to recognize your textures,
|
||||||
|
see the :option:`--check-terrain` option.
|
||||||
|
|
||||||
|
Also see the :ref:`installing-textures` section of the documentation.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``textures_path``
|
||||||
|
|
||||||
|
Format: A string (path to a dir with a terrain.png)
|
||||||
|
|
||||||
|
Default: None
|
||||||
|
|
||||||
|
.. cmdoption:: -v, --verbose
|
||||||
|
|
||||||
|
Prints more output. You can specify this multiple times.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``verbose``
|
||||||
|
|
||||||
|
Format: an integer
|
||||||
|
|
||||||
|
Default: 0
|
||||||
|
|
||||||
|
.. cmdoption:: -V, --version
|
||||||
|
|
||||||
|
Displays the version information and exits
|
||||||
|
|
||||||
|
**Not available in settings file**
|
||||||
|
|
||||||
|
.. cmdoption:: --web-assets-path <path>
|
||||||
|
|
||||||
|
When The Overviewer runs, it copies the files from the web_assets directory
|
||||||
|
to the destination directory. If you wish to override a file with your own,
|
||||||
|
for example, to make changes, you may put your modified copies in your own
|
||||||
|
directory and specify the directory with this option.
|
||||||
|
|
||||||
|
Files in the folder specified by ``path`` will override files from the
|
||||||
|
web_assets directory, letting you customize the files.
|
||||||
|
|
||||||
|
If you're running from source and are comfortable merging with Git, it may
|
||||||
|
be better to edit the web_assets directly. If we update one of the files,
|
||||||
|
you can use Git to merge in our changes with yours.
|
||||||
|
|
||||||
|
If, however, you do not like Git, and don't mind having to manually update
|
||||||
|
or merge web assets (or don't care for web asset updates at all), then copy
|
||||||
|
all the web assets to a directory of your own and use this option.
|
||||||
|
|
||||||
|
See the :ref:`web-assets` section for more info on customizing your web
|
||||||
|
assets.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``web_assets_path``
|
||||||
|
|
||||||
|
Format: A string (path to a directory to use for custom web assets)
|
||||||
|
|
||||||
|
Default: Not set (no additional web assets used)
|
||||||
|
|
||||||
|
.. cmdoption:: -z <zoom>, --zoom <zoom>
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
This option does not do what you think it does. You almost certainly do
|
||||||
|
not want to set this.
|
||||||
|
|
||||||
|
This option effectively sets *how far the map can be zoomed out*. The
|
||||||
|
Overviewer will by default determine how many *zoom levels* your map needs
|
||||||
|
to show the entire map. This option overrides that; setting this option
|
||||||
|
lower than automatically determined will *crop your map* and parts will be
|
||||||
|
cut off. (We acknowledge that name zoom is misleading)
|
||||||
|
|
||||||
|
To be precise, it sets the width and height of the highest zoom level, in
|
||||||
|
tiles. A zoom level of z means the highest zoom level of your map will be
|
||||||
|
2^z by 2^z tiles.
|
||||||
|
|
||||||
|
This option map be useful if you have some outlier chunks causing your map
|
||||||
|
to be too large, or you want to render a smaller portion of your map,
|
||||||
|
instead of rendering everything.
|
||||||
|
|
||||||
|
**If you are getting a "your map is waaaay too big" error** then this option
|
||||||
|
may help you render your map. That error is unlikely in naturally generated
|
||||||
|
worlds, but some really giant worlds may still cross the threshold. The
|
||||||
|
Overviewer will refuse to automatically render maps that require zoom level
|
||||||
|
15 and above, so if you get this error, try specifying ``--zoom 15``. If
|
||||||
|
your map is still cut off around the edges, increase the zoom level by 1 and
|
||||||
|
try again.
|
||||||
|
|
||||||
|
**Settings file:**
|
||||||
|
Option name: ``zoom``
|
||||||
|
|
||||||
|
Format: An integer.
|
||||||
|
|
||||||
|
Default: Automatically calculated from the world size.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
There are **more settings** that cannot be specified on the command line.
|
||||||
|
See the section below!
|
||||||
|
|
||||||
|
Settings File
|
||||||
|
=============
|
||||||
|
|
||||||
|
You can optionally store settings in a file named settings.py (or really,
|
||||||
|
anything you want). It is a regular python script, so you can use any python
|
||||||
|
functions or modules you want. To use a settings file, use the
|
||||||
|
:option:`--settings` command line option when you run the Overviewer.
|
||||||
|
|
||||||
|
For a sample settings file, look at 'sample.settings.py'. Note that this file is
|
||||||
|
not meant to be used directly, but instead it should be used as a collection of
|
||||||
|
examples to guide writing your own. It contains a number of examples to get you
|
||||||
|
started, but you almost certainly don't want to use it as-is.
|
||||||
|
|
||||||
|
You can specify *any of the above* options in your settings file *in addition to
|
||||||
|
the ones documented below*. For the command-line options, find its listed
|
||||||
|
"Option name" which is the Python identifier you will use. For example, if you
|
||||||
|
wanted to specify :option:`--bg-color`, you would look and see its option name
|
||||||
|
is "bg_color" (note the underscore) and you would put this line in your settings
|
||||||
|
file::
|
||||||
|
|
||||||
|
bg_color = "#000000"
|
||||||
|
|
||||||
|
Settings file options
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
In addition to the `Command line options`_, you can specify these options.
|
||||||
|
|
||||||
|
|
||||||
|
.. describe:: web_assets_hook
|
||||||
|
|
||||||
|
This option lets you define a function to run after the web assets have
|
||||||
|
been copied into the output directory, but before any tile rendering takes
|
||||||
|
place. This is an ideal time to do any custom postprocessing for
|
||||||
|
markers.js or other web assets.
|
||||||
|
|
||||||
|
Set this identifier to a Python *function object* to be called.
|
||||||
|
|
||||||
|
This function should accept one argument: a
|
||||||
|
:class:`overviewer_core.googlemap.MapGen` object.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Currently, this option only works if the :option:`--skip-js` option is
|
||||||
|
set
|
||||||
|
|
||||||
|
.. describe:: rendermode_options
|
||||||
|
|
||||||
|
Different rendermodes have different options. This option is a dictionary
|
||||||
|
that maps rendermode names to option dictionaries.
|
||||||
|
|
||||||
|
See the `Render Modes`_ section for relevant options to the render modes.
|
||||||
|
|
||||||
|
.. describe:: custom_rendermodes
|
||||||
|
|
||||||
|
You can also specify your own custom rendermodes with this option. This is a
|
||||||
|
dictionary mapping your rendermode name to a dictionary of parameters to
|
||||||
|
use.
|
||||||
|
|
||||||
|
See the `Defining Custom Rendermodes`_ section for more information.
|
||||||
|
|
||||||
|
Render Modes
|
||||||
|
============
|
||||||
|
|
||||||
|
A rendermode is a unique way of rendering a Minecraft map. The normal render
|
||||||
|
mode was the original, and we've since added a render mode with proper lighting,
|
||||||
|
a rendermode for nighttime lighting, and we have a rendermode that only shows
|
||||||
|
caves.
|
||||||
|
|
||||||
|
Beyond that, there are also render "overlays" that can be toggled on or off,
|
||||||
|
overlaying a proper rendering. These can be used to show where minerals are and
|
||||||
|
such.
|
||||||
|
|
||||||
|
Specify your rendermodes with :option:`--rendermodes`. You can get a list of all
|
||||||
|
rendermodes installed with :option:`--list-rendermodes`.
|
||||||
|
|
||||||
|
Options and Rendermode Inheritance
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
Each mode will accept its own options, as well as the options for
|
||||||
|
parent modes; for example the 'night' mode will also accept options
|
||||||
|
listed for 'lighting' and 'normal'. Also, if you set an option on a
|
||||||
|
mode, all its children will also have that option set. So, setting the
|
||||||
|
'edge_opacity' option on 'normal' will also set it on 'lighting' and
|
||||||
|
'night'.
|
||||||
|
|
||||||
|
Basically, each mode inherits available options and set options from
|
||||||
|
its parent.
|
||||||
|
|
||||||
|
Eventually the :option:`--list-rendermodes` option will show parent
|
||||||
|
relationships. Right now, it looks something like this:
|
||||||
|
|
||||||
|
* normal
|
||||||
|
|
||||||
|
* lighting
|
||||||
|
|
||||||
|
* night
|
||||||
|
* cave
|
||||||
|
|
||||||
|
* overlay
|
||||||
|
|
||||||
|
* spawn
|
||||||
|
* mineral
|
||||||
|
|
||||||
|
How to Set Options
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Available options for each mode are listed below, but once you know what to set
|
||||||
|
you'll have to edit your settings file to set them. Here's an example::
|
||||||
|
|
||||||
|
rendermode_options = {
|
||||||
|
'lighting': {
|
||||||
|
'edge_opacity': 0.5,
|
||||||
|
},
|
||||||
|
|
||||||
|
'cave': {
|
||||||
|
'lighting': True,
|
||||||
|
'depth_tinting': False,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
As you can see, each entry in ``rendermode_options`` starts with the mode name
|
||||||
|
you want to apply the options to, then a dictionary containing each option. So
|
||||||
|
in this example, 'lighting' mode has 'edge_opacity' set to 0.5, and 'cave' mode
|
||||||
|
has 'lighting' turned on and 'depth_tinting' turned off.
|
||||||
|
|
||||||
|
Option Listing
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Soon there should be a way to pull out supported options from Overviewer
|
||||||
|
directly, but for right now, here's a reference of currently supported options.
|
||||||
|
|
||||||
|
normal
|
||||||
|
~~~~~~
|
||||||
|
|
||||||
|
* **edge_opacity** - darkness of the edge lines, from 0.0 to 1.0 (default: 0.15)
|
||||||
|
* **min_depth** - lowest level of blocks to render (default: 0)
|
||||||
|
* **max_depth** - highest level of blocks to render (default: 127)
|
||||||
|
* **height_fading** - darken or lighten blocks based on height (default: False)
|
||||||
|
|
||||||
|
lighting
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
all the options available in 'normal', and...
|
||||||
|
|
||||||
|
* **shade_strength** - how dark to make the shadows, from 0.0 to 1.0 (default: 1.0)
|
||||||
|
|
||||||
|
night
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
'night' mode has no options of its own, but it inherits options from
|
||||||
|
'lighting'.
|
||||||
|
|
||||||
|
cave
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
all the options available in 'normal', and...
|
||||||
|
|
||||||
|
* **depth_tinting** - tint caves based on how deep they are (default: True)
|
||||||
|
* **only_lit** - only render lit caves (default: False)
|
||||||
|
* **lighting** - render caves with lighting enabled (default: False)
|
||||||
|
|
||||||
|
mineral
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
The mineral overlay supports one option, **minerals**, that has a fairly
|
||||||
|
complicated format. **minerals** must be a list of ``(blockid, (r, g, b))``
|
||||||
|
tuples that tell the mineral overlay what blocks to look for. Whenever a block
|
||||||
|
with that block id is found underground, the surface is colored with the given
|
||||||
|
color.
|
||||||
|
|
||||||
|
See the *settings.py* example below for an example usage of **minerals**.
|
||||||
|
|
||||||
|
Defining Custom Rendermodes
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Sometimes, you want to render two map layers with the same mode, but with two
|
||||||
|
different sets of options. For example, you way want to render a cave mode with
|
||||||
|
depth tinting, and another cave mode with lighting and no depth tinting. In this
|
||||||
|
case, you will want to define a 'custom' render mode that inherits from 'cave'
|
||||||
|
and uses the options you want. For example::
|
||||||
|
|
||||||
|
custom_rendermodes = {
|
||||||
|
'cave-lighting': {
|
||||||
|
'parent': 'cave',
|
||||||
|
'label': 'Lit Cave',
|
||||||
|
'description': 'cave mode, with lighting',
|
||||||
|
'options': {
|
||||||
|
'depth_tinting': False,
|
||||||
|
'lighting': True,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
rendermode = ['cave', 'cave-lighting']
|
||||||
|
|
||||||
|
Each entry in ``custom_rendermodes`` starts with the mode name, and is followed
|
||||||
|
by a dictionary of mode information, such as the parent mode and description
|
||||||
|
(for your reference), a label for use on the map, as well as the options to
|
||||||
|
apply.
|
||||||
|
|
||||||
|
Every custom rendermode you define is on exactly equal footing with the built-in
|
||||||
|
modes: you can put them in the ``rendermode`` list to render them, you can
|
||||||
|
inherit from them in other custom modes, and you can even add options to them
|
||||||
|
with ``rendermode_options``, though that's a little redundant.
|
||||||
|
|
||||||
|
Example *settings.py*
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This *settings.py* will render three layers: a normal 'lighting' layer, a 'cave'
|
||||||
|
layer restricted to between levels 40 and 55 to show off a hypothetical subway
|
||||||
|
system, and a 'mineral' layer that has been modified to show underground rail
|
||||||
|
tracks instead of ore.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
rendermode = ['lighting', 'subway-cave', 'subway-overlay']
|
||||||
|
|
||||||
|
custom_rendermodes = {
|
||||||
|
'subway-cave' : {'parent' : 'cave',
|
||||||
|
'label' : 'Subway',
|
||||||
|
'description' : 'a subway map, based on the cave rendermode',
|
||||||
|
'options' : {
|
||||||
|
'depth_tinting' : False,
|
||||||
|
'lighting' : True,
|
||||||
|
'only_lit' : True,
|
||||||
|
'min_depth' : 40,
|
||||||
|
'max_depth' : 55,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'subway-overlay' : {'parent' : 'mineral',
|
||||||
|
'label' : 'Subway Overlay',
|
||||||
|
'description' : 'an overlay showing the location of minecart tracks',
|
||||||
|
'options' : {'minerals' : [
|
||||||
|
(27, (255, 234, 0)),
|
||||||
|
(28, (255, 234, 0)),
|
||||||
|
(66, (255, 234, 0)),
|
||||||
|
]}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
rendermode_options = {
|
||||||
|
'lighting' : {'edge_opacity' : 0.5},
|
||||||
|
# 'night' : {'shade_strength' : 0.5},
|
||||||
|
# 'cave' : {'only_lit' : True, 'lighting' : True, 'depth_tinting' : False},
|
||||||
|
}
|
||||||
|
|
||||||
|
.. _web-assets:
|
||||||
|
|
||||||
|
Customizing Web Assets
|
||||||
|
======================
|
||||||
|
|
||||||
|
The web assets are the static html files stored in
|
||||||
|
overviewer_core/data/web_assets that are copied to the destination directory
|
||||||
|
when you run the Overviewer. Some of these files are actually templates and
|
||||||
|
certain parameters are set at render time depending on various factors. Others
|
||||||
|
are just straight up copied.
|
||||||
|
|
||||||
|
You should not typically need to edit the files in here, but if you like
|
||||||
|
customizing things or want to edit them for whatever reason, here's two ways:
|
||||||
|
|
||||||
|
1. If you're not afraid of Git and you're running the Overviewer from a Git
|
||||||
|
clone of our repository, you can edit the files in
|
||||||
|
overviewer_core/data/web_assets directly. When you pull in changes from us,
|
||||||
|
you will have to merge, but using Git should make this relatively painless.
|
||||||
|
|
||||||
|
2. Otherwise, the recommended way is to use the :option:`--web-assets-path`
|
||||||
|
option. Use this option and point it to a directory of customized web assets
|
||||||
|
to copy.
|
||||||
|
|
||||||
|
Files from the original web_assets directory are still copied, but any files
|
||||||
|
in the custom web assets directory will override the originals. This way you
|
||||||
|
can customize a few files and leave the rest alone.
|
||||||
|
|
||||||
|
The downside is, if you want to upgrade you will have to merge in your
|
||||||
|
changes with any of our changes manually. To avoid merging entirely, just
|
||||||
|
copy *all* the web assets to your custom web assets folder. You'll keep the
|
||||||
|
old version of all files for eternity, missing out on new features we may
|
||||||
|
add, but you won't have to deal with merges at all.
|
||||||
139
docs/running.rst
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
======================
|
||||||
|
Running the Overviewer
|
||||||
|
======================
|
||||||
|
|
||||||
|
Rendering your First Map
|
||||||
|
========================
|
||||||
|
|
||||||
|
Overviewer is a command-line application, and so it needs to be run from the
|
||||||
|
command line. If you installed Overviewer from a package manager, the command is
|
||||||
|
``overviewer.py``. If you downloaded it manually, open a terminal window and
|
||||||
|
navigate to wherever you downloaded Overviewer. For pre-compiled Windows builds,
|
||||||
|
the command is ``overviewer.exe``. For other systems, it's ``overviewer.py``.
|
||||||
|
|
||||||
|
The basic usage for Windows is::
|
||||||
|
|
||||||
|
overviewer.exe [options] <World> <Output Dir>
|
||||||
|
|
||||||
|
And similarly for other systems::
|
||||||
|
|
||||||
|
overviewer.py [options] <World> <Output Dir>
|
||||||
|
|
||||||
|
**World**
|
||||||
|
World can be one of several things.
|
||||||
|
|
||||||
|
1. The path to your Minecraft world on your hard drive
|
||||||
|
2. The name of a single player world on your current system. Note that if it
|
||||||
|
has spaces, you will need to put the world name in quotes.
|
||||||
|
3. If your single-player world name is in the format "World #" (e.g. "World
|
||||||
|
1"), you can just specify the number.
|
||||||
|
|
||||||
|
**Output Dir**
|
||||||
|
This is the directory you would like to put the rendered tiles and
|
||||||
|
supporting HTML and javascript files. You should use the same output
|
||||||
|
directory each time; the Overviewer will automatically re-render only the
|
||||||
|
tiles that need rendering on subsequent runs.
|
||||||
|
|
||||||
|
**options**
|
||||||
|
See the :doc:`options` page for a list of options you can
|
||||||
|
specify.
|
||||||
|
|
||||||
|
For example, on Windows if your Minecraft server runs out of ``c:\server\`` and you want
|
||||||
|
to put the rendered map in ``c:\mcmap\``, run this::
|
||||||
|
|
||||||
|
overviewer.exe c:\server\world c:\mcmap
|
||||||
|
|
||||||
|
For Mac or Linux builds from source, you would run something like this with the
|
||||||
|
current directory in the top level of the source tree::
|
||||||
|
|
||||||
|
./overviewer.py /opt/minecraft/server/world /opt/minecraft/mcmap
|
||||||
|
|
||||||
|
The first render can take a while, depending on the size of your world.
|
||||||
|
|
||||||
|
When the render is done, open up *index.html* using your web-browser of choice.
|
||||||
|
Pretty cool, huh? You can even upload this map to a web server to share with
|
||||||
|
others! Simply upload the entire folder to a web server and point your users to
|
||||||
|
index.html!
|
||||||
|
|
||||||
|
Incremental updates are just as easy, and a lot faster. If you go and change
|
||||||
|
something inside your world, run the command again and Overviewer will
|
||||||
|
automatically re-render only what's needed.
|
||||||
|
|
||||||
|
.. _installing-textures:
|
||||||
|
|
||||||
|
Installing the Textures
|
||||||
|
=======================
|
||||||
|
If you're running on a machine without the Minecraft client installed, you will
|
||||||
|
need to provide the terrain.png file manually for the Overviewer to use in
|
||||||
|
rendering your world. This is common for servers.
|
||||||
|
|
||||||
|
All Overviewer needs is a terrain.png file. If the Minecraft client is
|
||||||
|
installed, it will use the terrain.png that comes with Minecraft. If the
|
||||||
|
Minecraft client is not installed or you wish to use a different terrain.png,
|
||||||
|
for example a custom texture pack, read on.
|
||||||
|
|
||||||
|
You have several options:
|
||||||
|
|
||||||
|
* If you have the Minecraft client installed, the Overviewer will automatically
|
||||||
|
use those textures. This is a good solution since the Minecraft Launcher will
|
||||||
|
always keep this file up-to-date and you don't have to do anything extra.
|
||||||
|
|
||||||
|
* If you're running the Overviewer on a server, you can still put the
|
||||||
|
minecraft.jar file (not the launcher) into the correct location and the
|
||||||
|
Overviewer will find and use it, even if the rest of the client files are
|
||||||
|
missing. On Linux, try a command like this::
|
||||||
|
|
||||||
|
wget -N http://s3.amazonaws.com/MinecraftDownload/minecraft.jar -P ~/.minecraft/bin/
|
||||||
|
|
||||||
|
* You can manually extract the terrain.png from minecraft.jar or your favorite
|
||||||
|
texture pack. If you've built the Overviewer from source, simply place the
|
||||||
|
file in the same directory as overviewer.py or overviewer.exe. For
|
||||||
|
installations, you will need to specify the path... see the next bullet.
|
||||||
|
|
||||||
|
* You can put a terrain.png file anywhere you want and point to its location
|
||||||
|
with the :option:`--textures-path` option. This should point to the directory containing
|
||||||
|
the terrain.png, not to the file itself.
|
||||||
|
|
||||||
|
Note: the :option:`--check-terrain` option is useful for debugging terrain.png issues.
|
||||||
|
For example::
|
||||||
|
|
||||||
|
$ ./overviewer.py --check-terrain
|
||||||
|
2011-09-26 21:51:46,494 [INFO] Found terrain.png in '/home/achin/.minecraft/bin/minecraft.jar'
|
||||||
|
2011-09-26 21:51:46,497 [INFO] Hash of terrain.png file is: `6d53f9e59d2ea8c6f574c9a366f3312cd87338a8`
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
$ ./overviewer.py --check-terrain --textures-path=/tmp
|
||||||
|
2011-09-26 21:52:52,143 [INFO] Found terrain.png in '/tmp/terrain.png'
|
||||||
|
2011-09-26 21:52:52,145 [INFO] Hash of terrain.png file is: `6d53f9e59d2ea8c6f574c9a366f3312cd87338a8`
|
||||||
|
|
||||||
|
Running on a Live Map
|
||||||
|
=====================
|
||||||
|
If you're running the Overviewer on a live server or a single player world
|
||||||
|
that's running, read this section.
|
||||||
|
|
||||||
|
Minecraft doesn't really like it when other programs go snooping around in a
|
||||||
|
live world, so running Overviewer on a live world usually creates a few errors,
|
||||||
|
usually "corrupt chunk" errors. You *can* do this, but it's not a supported way
|
||||||
|
of running Overviewer.
|
||||||
|
|
||||||
|
To get around this, you can copy your live world somewhere else, and render the
|
||||||
|
copied world instead. If you're already making backups of your world, you can
|
||||||
|
use the backups to make the render. Many people even use their backups to run
|
||||||
|
Overviewer on a different machine than the one running the Minecraft server.
|
||||||
|
|
||||||
|
There used to be a few things to be careful about, but right now there's only
|
||||||
|
one important thing left.
|
||||||
|
|
||||||
|
Preserving Modification Times
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The important thing to be careful about when copying world files to another
|
||||||
|
location is file modification times, which Overviewer uses to figure out what
|
||||||
|
parts of the map need updating. If you do a straight copy, usually this will
|
||||||
|
update the modification times on all the copied files, causing Overviewer to
|
||||||
|
re-render the entire map. To copy files on Unix, while keeping these
|
||||||
|
modification times intact, use ``cp -p``. For people who render from backups,
|
||||||
|
GNU ``tar`` automatically handles modification times correctly. ``rsync -a``
|
||||||
|
will handle this correctly as well. If you use some other tool, you'll have to
|
||||||
|
figure out how to do this yourself.
|
||||||
@@ -114,8 +114,8 @@ def main():
|
|||||||
parser.add_option("--imgformat", dest="imgformat", helptext="The image output format to use. Currently supported: png(default), jpg.", advanced=True )
|
parser.add_option("--imgformat", dest="imgformat", helptext="The image output format to use. Currently supported: png(default), jpg.", advanced=True )
|
||||||
parser.add_option("--imgquality", dest="imgquality", default=95, helptext="Specify the quality of image output when using imgformat=\"jpg\".", type="int", advanced=True)
|
parser.add_option("--imgquality", dest="imgquality", default=95, helptext="Specify the quality of image output when using imgformat=\"jpg\".", type="int", advanced=True)
|
||||||
parser.add_option("--bg-color", dest="bg_color", helptext="Configures the background color for the GoogleMap output. Specify in #RRGGBB format", advanced=True, type="string", default="#1A1A1A")
|
parser.add_option("--bg-color", dest="bg_color", helptext="Configures the background color for the GoogleMap output. Specify in #RRGGBB format", advanced=True, type="string", default="#1A1A1A")
|
||||||
parser.add_option("--optimize-img", dest="optimizeimg", helptext="If using png, perform image file size optimizations on the output. Specify 1 for pngcrush, 2 for pngcrush+advdef and 3 for pngcrush-advdef with more agressive settings. This may double (or more) render times, but will produce up to 30% smaller images. NOTE: requires corresponding programs in $PATH or %PATH%", advanced=True)
|
parser.add_option("--optimize-img", dest="optimizeimg", helptext="If using png, perform image file size optimizations on the output. Specify 1 for pngcrush, 2 for pngcrush+advdef and 3 for pngcrush-advdef with more aggressive settings. This may double (or more) render times, but will produce up to 30% smaller images. NOTE: requires corresponding programs in $PATH or %PATH%", advanced=True)
|
||||||
parser.add_option("--web-assets-hook", dest="web_assets_hook", helptext="If provided, run this function after the web assets have been copied, but before actual tile rendering begins. It should accept a QuadtreeGen object as its only argument.", action="store", metavar="SCRIPT", type="function", advanced=True)
|
parser.add_option("--web-assets-hook", dest="web_assets_hook", helptext="If provided, run this function after the web assets have been copied, but before actual tile rendering begins. It should accept a MapGen object as its only argument.", action="store", metavar="FUNCTION", type="function", advanced=True)
|
||||||
parser.add_option("--web-assets-path", dest="web_assets_path", helptext="Specifies a non-standard web_assets directory to use. Files here will overwrite the default web assets.", metavar="PATH", type="string", advanced=True)
|
parser.add_option("--web-assets-path", dest="web_assets_path", helptext="Specifies a non-standard web_assets directory to use. Files here will overwrite the default web assets.", metavar="PATH", type="string", advanced=True)
|
||||||
parser.add_option("--textures-path", dest="textures_path", helptext="Specifies a non-standard textures path, from which terrain.png and other textures are loaded.", metavar="PATH", type="string", advanced=True)
|
parser.add_option("--textures-path", dest="textures_path", helptext="Specifies a non-standard textures path, from which terrain.png and other textures are loaded.", metavar="PATH", type="string", advanced=True)
|
||||||
parser.add_option("--check-terrain", dest="check_terrain", helptext="Prints the location and hash of terrain.png, useful for debugging terrain.png problems", action="store_true", advanced=False, commandLineOnly=True)
|
parser.add_option("--check-terrain", dest="check_terrain", helptext="Prints the location and hash of terrain.png, useful for debugging terrain.png problems", action="store_true", advanced=False, commandLineOnly=True)
|
||||||
@@ -124,7 +124,7 @@ def main():
|
|||||||
parser.add_option("--skip-js", dest="skipjs", action="store_true", helptext="Don't output marker.js or regions.js")
|
parser.add_option("--skip-js", dest="skipjs", action="store_true", helptext="Don't output marker.js or regions.js")
|
||||||
parser.add_option("--no-signs", dest="nosigns", action="store_true", helptext="Don't output signs to markers.js")
|
parser.add_option("--no-signs", dest="nosigns", action="store_true", helptext="Don't output signs to markers.js")
|
||||||
parser.add_option("--north-direction", dest="north_direction", action="store", helptext="Specifies which corner of the screen north will point to. Defaults to whatever the current map uses, or lower-left for new maps. Valid options are: " + ", ".join(avail_north_dirs) + ".", type="choice", default="auto", choices=avail_north_dirs)
|
parser.add_option("--north-direction", dest="north_direction", action="store", helptext="Specifies which corner of the screen north will point to. Defaults to whatever the current map uses, or lower-left for new maps. Valid options are: " + ", ".join(avail_north_dirs) + ".", type="choice", default="auto", choices=avail_north_dirs)
|
||||||
parser.add_option("--changelist", dest="changelist", action="store", helptext="Output list of changed tiles to file. If the file exists, it's contents will be overwritten.",advanced=True)
|
parser.add_option("--changelist", dest="changelist", action="store", helptext="Output list of changed tiles to file. If the file exists, its contents will be overwritten.",advanced=True)
|
||||||
parser.add_option("--changelist-format", dest="changelist_format", action="store", helptext="Output relative or absolute paths for --changelist. Only valid when --changelist is used", type="choice", default="auto", choices=["auto", "relative","absolute"],advanced=True)
|
parser.add_option("--changelist-format", dest="changelist_format", action="store", helptext="Output relative or absolute paths for --changelist. Only valid when --changelist is used", type="choice", default="auto", choices=["auto", "relative","absolute"],advanced=True)
|
||||||
parser.add_option("--display-config", dest="display_config", action="store_true", helptext="Display the configuration parameters, but don't render the map. Requires all required options to be specified", commandLineOnly=True)
|
parser.add_option("--display-config", dest="display_config", action="store_true", helptext="Display the configuration parameters, but don't render the map. Requires all required options to be specified", commandLineOnly=True)
|
||||||
#parser.add_option("--write-config", dest="write_config", action="store_true", helptext="Writes out a sample config file", commandLineOnly=True)
|
#parser.add_option("--write-config", dest="write_config", action="store_true", helptext="Writes out a sample config file", commandLineOnly=True)
|
||||||
|
|||||||
@@ -143,8 +143,8 @@ solid_blocks = set([1, 2, 3, 4, 5, 7, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
|
|||||||
fluid_blocks = set([8,9,10,11])
|
fluid_blocks = set([8,9,10,11])
|
||||||
|
|
||||||
# This set holds block ids that are not candidates for spawning mobs on
|
# This set holds block ids that are not candidates for spawning mobs on
|
||||||
# (glass, half blocks, fluids)
|
# (glass, slabs, stairs, fluids, ice, pistons, webs,TNT, wheat, cactus, iron bars, glass planes, fences, fence gate, cake, bed, repeaters, trapdoor)
|
||||||
nospawn_blocks = set([20,44]).union(fluid_blocks)
|
nospawn_blocks = set([20,26, 29, 30, 33, 34, 44, 46, 53, 59, 67, 79, 81, 85, 92, 93, 94, 96, 107, 109, 101, 102]).union(fluid_blocks)
|
||||||
|
|
||||||
class ChunkCorrupt(Exception):
|
class ChunkCorrupt(Exception):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ body {
|
|||||||
border: 2px solid #000;
|
border: 2px solid #000;
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
width: 20em;
|
width: 20em;
|
||||||
background-colour: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchControl>input.inactive {
|
#searchControl>input.inactive {
|
||||||
|
|||||||
@@ -249,11 +249,11 @@ var overviewer = {
|
|||||||
overviewer.collections.mapTypes[i]);
|
overviewer.collections.mapTypes[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Jump to the hash if given
|
// Jump to the hash if given
|
||||||
overviewer.util.initHash();
|
overviewer.util.initHash();
|
||||||
|
|
||||||
// Add live hash update listeners
|
// Add live hash update listeners
|
||||||
// Note: It is important to add them after jumping to the hash
|
// Note: It is important to add them after jumping to the hash
|
||||||
google.maps.event.addListener(overviewer.map, 'dragend', function() {
|
google.maps.event.addListener(overviewer.map, 'dragend', function() {
|
||||||
overviewer.util.updateHash();
|
overviewer.util.updateHash();
|
||||||
});
|
});
|
||||||
@@ -262,13 +262,13 @@ var overviewer = {
|
|||||||
overviewer.util.updateHash();
|
overviewer.util.updateHash();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Make the link again whenever the map changes
|
// Make the link again whenever the map changes
|
||||||
google.maps.event.addListener(overviewer.map, 'maptypeid_changed', function() {
|
google.maps.event.addListener(overviewer.map, 'maptypeid_changed', function() {
|
||||||
$('#'+overviewerConfig.CONST.mapDivId).css(
|
$('#'+overviewerConfig.CONST.mapDivId).css(
|
||||||
'background-color', overviewer.util.getMapTypeBackgroundColor(
|
'background-color', overviewer.util.getMapTypeBackgroundColor(
|
||||||
overviewer.map.getMapTypeId()));
|
overviewer.map.getMapTypeId()));
|
||||||
//smuggled this one in here for maptypeid hash generation --CounterPillow
|
//smuggled this one in here for maptypeid hash generation --CounterPillow
|
||||||
overviewer.util.updateHash();
|
overviewer.util.updateHash();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
@@ -708,7 +708,7 @@ var overviewer = {
|
|||||||
|
|
||||||
// only create drop down if there's used options
|
// only create drop down if there's used options
|
||||||
if (items.length > 0) {
|
if (items.length > 0) {
|
||||||
overviewer.util.createDropDown('Signposts', items);
|
overviewer.util.createDropDown('Markers', items);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -843,12 +843,12 @@ var overviewer = {
|
|||||||
|
|
||||||
var searchInput = document.createElement("input");
|
var searchInput = document.createElement("input");
|
||||||
searchInput.type = "text";
|
searchInput.type = "text";
|
||||||
searchInput.value = "Sign Search";
|
searchInput.value = "Sign Search";
|
||||||
searchInput.title = "Sign Search";
|
searchInput.title = "Sign Search";
|
||||||
$(searchInput).addClass("inactive");
|
$(searchInput).addClass("inactive");
|
||||||
|
|
||||||
/* Hey dawg, I heard you like functions.
|
/* Hey dawg, I heard you like functions.
|
||||||
* So we defined a function inside your function.
|
* So we defined a function inside your function.
|
||||||
*/
|
*/
|
||||||
searchInput.onfocus = function() {
|
searchInput.onfocus = function() {
|
||||||
if (searchInput.value == "Sign Search") {
|
if (searchInput.value == "Sign Search") {
|
||||||
@@ -856,7 +856,7 @@ var overviewer = {
|
|||||||
$(searchInput).removeClass("inactive").addClass("active");
|
$(searchInput).removeClass("inactive").addClass("active");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
searchInput.onblur = function() {
|
searchInput.onblur = function() {
|
||||||
if (searchInput.value == "") {
|
if (searchInput.value == "") {
|
||||||
searchInput.value = "Sign Search";
|
searchInput.value = "Sign Search";
|
||||||
$(searchInput).removeClass("active").addClass("inactive");
|
$(searchInput).removeClass("active").addClass("inactive");
|
||||||
@@ -957,8 +957,8 @@ var overviewer = {
|
|||||||
'initHash': function() {
|
'initHash': function() {
|
||||||
if(window.location.hash.split("/").length > 1) {
|
if(window.location.hash.split("/").length > 1) {
|
||||||
overviewer.util.goToHash();
|
overviewer.util.goToHash();
|
||||||
// Clean up the hash.
|
// Clean up the hash.
|
||||||
overviewer.util.updateHash();
|
overviewer.util.updateHash();
|
||||||
|
|
||||||
// Add a marker indicating the user-supplied position
|
// Add a marker indicating the user-supplied position
|
||||||
var coordinates = overviewer.util.fromLatLngToWorld(overviewer.map.getCenter().lat(), overviewer.map.getCenter().lng());
|
var coordinates = overviewer.util.fromLatLngToWorld(overviewer.map.getCenter().lat(), overviewer.map.getCenter().lng());
|
||||||
@@ -976,7 +976,7 @@ var overviewer = {
|
|||||||
'updateHash': function() {
|
'updateHash': function() {
|
||||||
var coordinates = overviewer.util.fromLatLngToWorld(overviewer.map.getCenter().lat(), overviewer.map.getCenter().lng());
|
var coordinates = overviewer.util.fromLatLngToWorld(overviewer.map.getCenter().lat(), overviewer.map.getCenter().lng());
|
||||||
var zoom = overviewer.map.getZoom();
|
var zoom = overviewer.map.getZoom();
|
||||||
var maptype = overviewer.map.getMapTypeId();
|
var maptype = overviewer.map.getMapTypeId();
|
||||||
if (zoom == overviewerConfig.map.maxZoom) {
|
if (zoom == overviewerConfig.map.maxZoom) {
|
||||||
zoom = 'max';
|
zoom = 'max';
|
||||||
} else if (zoom == overviewerConfig.map.minZoom) {
|
} else if (zoom == overviewerConfig.map.minZoom) {
|
||||||
@@ -988,18 +988,18 @@ var overviewer = {
|
|||||||
overviewer.util.setHash(coordinates.x, coordinates.y, coordinates.z, zoom, maptype);
|
overviewer.util.setHash(coordinates.x, coordinates.y, coordinates.z, zoom, maptype);
|
||||||
},
|
},
|
||||||
'goToHash': function() {
|
'goToHash': function() {
|
||||||
// Note: the actual data begins at coords[1], coords[0] is empty.
|
// Note: the actual data begins at coords[1], coords[0] is empty.
|
||||||
var coords = window.location.hash.split("/");
|
var coords = window.location.hash.split("/");
|
||||||
var latlngcoords = overviewer.util.fromWorldToLatLng(parseInt(coords[1]), parseInt(coords[2]), parseInt(coords[3]));
|
var latlngcoords = overviewer.util.fromWorldToLatLng(parseInt(coords[1]), parseInt(coords[2]), parseInt(coords[3]));
|
||||||
var zoom;
|
var zoom;
|
||||||
var maptype = '';
|
var maptype = '';
|
||||||
// The if-statements try to prevent unexpected behaviour when using incomplete hashes, e.g. older links
|
// The if-statements try to prevent unexpected behaviour when using incomplete hashes, e.g. older links
|
||||||
if (coords.length > 4) {
|
if (coords.length > 4) {
|
||||||
zoom = coords[4];
|
zoom = coords[4];
|
||||||
}
|
}
|
||||||
if (coords.length > 5) {
|
if (coords.length > 5) {
|
||||||
maptype = coords[5];
|
maptype = coords[5];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zoom == 'max') {
|
if (zoom == 'max') {
|
||||||
zoom = overviewerConfig.map.maxZoom;
|
zoom = overviewerConfig.map.maxZoom;
|
||||||
@@ -1015,13 +1015,13 @@ var overviewer = {
|
|||||||
zoom = overviewerConfig.map.defaultZoom;
|
zoom = overviewerConfig.map.defaultZoom;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// If the maptype isn't set, set the default one.
|
// If the maptype isn't set, set the default one.
|
||||||
if (maptype == '') {
|
if (maptype == '') {
|
||||||
// We can now set the map to use the 'coordinate' map type
|
// We can now set the map to use the 'coordinate' map type
|
||||||
overviewer.map.setMapTypeId(overviewer.util.getDefaultMapTypeId());
|
overviewer.map.setMapTypeId(overviewer.util.getDefaultMapTypeId());
|
||||||
} else {
|
} else {
|
||||||
overviewer.map.setMapTypeId(maptype);
|
overviewer.map.setMapTypeId(maptype);
|
||||||
}
|
}
|
||||||
|
|
||||||
overviewer.map.setCenter(latlngcoords);
|
overviewer.map.setCenter(latlngcoords);
|
||||||
overviewer.map.setZoom(zoom);
|
overviewer.map.setZoom(zoom);
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
var overviewerConfig = {
|
var overviewerConfig = {
|
||||||
/**
|
/**
|
||||||
* These are things that will probably not need to be changed by the user,
|
* These are things that will probably not need to be changed, but are there
|
||||||
* but are there because otherwise changing them is a giant PITA.
|
* because otherwise changing them is a giant PITA. If you, the user, sees
|
||||||
|
* that its crucial for you to change these settings then the document
|
||||||
|
* repository might be able to assist you.
|
||||||
|
* http://docs.overviewer.org/en/latest/options/#customizing-web-assets
|
||||||
*/
|
*/
|
||||||
'CONST': {
|
'CONST': {
|
||||||
/**
|
/**
|
||||||
* Height and width of the tiles in pixels (I think).
|
* Height and width of the tiles in pixels.
|
||||||
*/
|
*/
|
||||||
'tileSize': 384,
|
'tileSize': 384,
|
||||||
/**
|
/**
|
||||||
@@ -88,6 +91,11 @@ var overviewerConfig = {
|
|||||||
'center': {spawn_coords},
|
'center': {spawn_coords},
|
||||||
/**
|
/**
|
||||||
* Set this to tell browsers how long they should cache tiles in minutes.
|
* Set this to tell browsers how long they should cache tiles in minutes.
|
||||||
|
* Essentially if set to 0, the url for tiles will end in .png
|
||||||
|
* if not set to 0 it will amend a number derived from the current time
|
||||||
|
* to the end of the url, like .png?c=123456. This is a great method for
|
||||||
|
* preventing browsers from caching the images. 0 saves bandwidth, not 0
|
||||||
|
* prevents caching.
|
||||||
*/
|
*/
|
||||||
'cacheMinutes': 0,
|
'cacheMinutes': 0,
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ class QuadtreeGen(object):
|
|||||||
|
|
||||||
if depth is None:
|
if depth is None:
|
||||||
# Determine quadtree depth (midpoint is always 0,0)
|
# Determine quadtree depth (midpoint is always 0,0)
|
||||||
for p in xrange(15):
|
for p in xrange(64):
|
||||||
# Will 2^p tiles wide and high suffice?
|
# Will 2^p tiles wide and high suffice?
|
||||||
|
|
||||||
# X has twice as many chunks as tiles, then halved since this is a
|
# X has twice as many chunks as tiles, then halved since this is a
|
||||||
@@ -92,10 +92,12 @@ class QuadtreeGen(object):
|
|||||||
if xradius >= worldobj.maxcol and -xradius <= worldobj.mincol and \
|
if xradius >= worldobj.maxcol and -xradius <= worldobj.mincol and \
|
||||||
yradius >= worldobj.maxrow and -yradius <= worldobj.minrow:
|
yradius >= worldobj.maxrow and -yradius <= worldobj.minrow:
|
||||||
break
|
break
|
||||||
else:
|
|
||||||
raise ValueError("Your map is waaaay too big! Use the 'zoom' option in 'settings.py'.")
|
|
||||||
|
|
||||||
self.p = p
|
if p < 15:
|
||||||
|
self.p = p
|
||||||
|
else:
|
||||||
|
raise ValueError("Your map is waaaay too big! Use the 'zoom' option in 'settings.py'. Overviewer is estimating %i zoom levels, but you probably want less." % (p,))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.p = depth
|
self.p = depth
|
||||||
xradius = 2**depth
|
xradius = 2**depth
|
||||||
|
|||||||
@@ -108,15 +108,16 @@ class RenderNode(object):
|
|||||||
raise ValueError("there must be at least one quadtree to work on")
|
raise ValueError("there must be at least one quadtree to work on")
|
||||||
|
|
||||||
self.options = options
|
self.options = options
|
||||||
|
# A list of quadtree.QuadTree objects representing each rendermode
|
||||||
|
# requested
|
||||||
self.quadtrees = quadtrees
|
self.quadtrees = quadtrees
|
||||||
#List of changed tiles
|
#List of changed tiles
|
||||||
self.rendered_tiles = []
|
self.rendered_tiles = []
|
||||||
|
|
||||||
#bind an index value to the quadtree so we can find it again
|
#bind an index value to the quadtree so we can find it again
|
||||||
#and figure out which worlds are where
|
#and figure out which worlds are where
|
||||||
i = 0
|
|
||||||
self.worlds = []
|
self.worlds = []
|
||||||
for q in quadtrees:
|
for i, q in enumerate(quadtrees):
|
||||||
q._render_index = i
|
q._render_index = i
|
||||||
i += 1
|
i += 1
|
||||||
if q.world not in self.worlds:
|
if q.world not in self.worlds:
|
||||||
@@ -163,10 +164,13 @@ class RenderNode(object):
|
|||||||
else:
|
else:
|
||||||
pool.map_async(bool,xrange(multiprocessing.cpu_count()),1)
|
pool.map_async(bool,xrange(multiprocessing.cpu_count()),1)
|
||||||
|
|
||||||
|
# 1 quadtree object per rendermode requested
|
||||||
quadtrees = self.quadtrees
|
quadtrees = self.quadtrees
|
||||||
|
|
||||||
# do per-quadtree init
|
# Determine the total number of tiles by adding up the number of tiles
|
||||||
|
# from each quadtree. Also find the max zoom level (max_p). Even though
|
||||||
|
# each quadtree will always have the same zoom level, this bit of code
|
||||||
|
# does not make that assumption.
|
||||||
max_p = 0
|
max_p = 0
|
||||||
total = 0
|
total = 0
|
||||||
for q in quadtrees:
|
for q in quadtrees:
|
||||||
@@ -174,7 +178,9 @@ class RenderNode(object):
|
|||||||
if q.p > max_p:
|
if q.p > max_p:
|
||||||
max_p = q.p
|
max_p = q.p
|
||||||
self.max_p = max_p
|
self.max_p = max_p
|
||||||
# Render the highest level of tiles from the chunks
|
|
||||||
|
# The next sections of code render the highest zoom level of tiles. The
|
||||||
|
# section after render the other levels.
|
||||||
results = collections.deque()
|
results = collections.deque()
|
||||||
complete = 0
|
complete = 0
|
||||||
logging.info("Rendering highest zoom level of tiles now.")
|
logging.info("Rendering highest zoom level of tiles now.")
|
||||||
@@ -247,7 +253,8 @@ class RenderNode(object):
|
|||||||
|
|
||||||
self.print_statusline(complete, total, 1, True)
|
self.print_statusline(complete, total, 1, True)
|
||||||
|
|
||||||
# Now do the other layers
|
# The highest zoom level has been rendered.
|
||||||
|
# Now do the lower zoom levels
|
||||||
for zoom in xrange(self.max_p-1, 0, -1):
|
for zoom in xrange(self.max_p-1, 0, -1):
|
||||||
level = self.max_p - zoom + 1
|
level = self.max_p - zoom + 1
|
||||||
assert len(results) == 0
|
assert len(results) == 0
|
||||||
@@ -341,6 +348,7 @@ class RenderNode(object):
|
|||||||
|
|
||||||
@catch_keyboardinterrupt
|
@catch_keyboardinterrupt
|
||||||
def render_worldtile_batch(batch):
|
def render_worldtile_batch(batch):
|
||||||
|
# batch is a list. Each item is [quadtree_id, colstart, colend, rowstart, rowend, tilepath]
|
||||||
global child_rendernode
|
global child_rendernode
|
||||||
rendernode = child_rendernode
|
rendernode = child_rendernode
|
||||||
count = 0
|
count = 0
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ def _find_file(filename, mode="rb", verbose=False):
|
|||||||
|
|
||||||
* the textures_path given in the config file (if present)
|
* the textures_path given in the config file (if present)
|
||||||
* The program dir (same dir as overviewer.py)
|
* The program dir (same dir as overviewer.py)
|
||||||
* The overviewer_core textures dir
|
* The overviewer_core/data/textures dir
|
||||||
* On Darwin, in /Applications/Minecraft
|
* On Darwin, in /Applications/Minecraft
|
||||||
* Inside minecraft.jar, which is looked for at these locations
|
* Inside minecraft.jar, which is looked for at these locations
|
||||||
|
|
||||||
@@ -303,9 +303,9 @@ def _build_block(top, side, blockID=None):
|
|||||||
composite.alpha_over(img, otherside, (12,6), otherside)
|
composite.alpha_over(img, otherside, (12,6), otherside)
|
||||||
composite.alpha_over(img, top, (0,9), top)
|
composite.alpha_over(img, top, (0,9), top)
|
||||||
else:
|
else:
|
||||||
|
composite.alpha_over(img, top, (0,0), top)
|
||||||
composite.alpha_over(img, side, (0,6), side)
|
composite.alpha_over(img, side, (0,6), side)
|
||||||
composite.alpha_over(img, otherside, (12,6), otherside)
|
composite.alpha_over(img, otherside, (12,6), otherside)
|
||||||
composite.alpha_over(img, top, (0,0), top)
|
|
||||||
|
|
||||||
# Manually touch up 6 pixels that leave a gap because of how the
|
# Manually touch up 6 pixels that leave a gap because of how the
|
||||||
# shearing works out. This makes the blocks perfectly tessellate-able
|
# shearing works out. This makes the blocks perfectly tessellate-able
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ if imgformat != "jpg":
|
|||||||
################################################################################
|
################################################################################
|
||||||
### web_assets_hook
|
### web_assets_hook
|
||||||
## If provided, run this function after the web assets have been copied, but
|
## If provided, run this function after the web assets have been copied, but
|
||||||
## before actual tile rendering beings. It should accept a QuadtreeGen
|
## before actual tile rendering beings. It should accept a MapGen
|
||||||
## object as its only argument. Note: this is only called if skipjs is True
|
## object as its only argument. Note: this is only called if skipjs is True
|
||||||
## Default: not yet
|
## Default: not yet
|
||||||
## Type: function
|
## Type: function
|
||||||
|
|||||||
2
setup.py
@@ -105,7 +105,7 @@ if py2exe is not None:
|
|||||||
b = 3
|
b = 3
|
||||||
else:
|
else:
|
||||||
b = 1
|
b = 1
|
||||||
setup_kwargs['options']['py2exe'] = {'bundle_files' : b, 'excludes': 'Tkinter'}
|
setup_kwargs['options']['py2exe'] = {'bundle_files' : b, 'excludes': 'Tkinter', 'includes':['fileinput', 'overviewer_core.items']}
|
||||||
|
|
||||||
#
|
#
|
||||||
# py2app options
|
# py2app options
|
||||||
|
|||||||