Skip to content

Commit

Permalink
Add an option to get the extent of the map.
Browse files Browse the repository at this point in the history
  • Loading branch information
Martijn Versteegh authored and sfan5 committed Oct 20, 2018
1 parent 48d9e0b commit fa5755a
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 1 deletion.
3 changes: 3 additions & 0 deletions README.rst
Expand Up @@ -77,6 +77,9 @@ draworigin:
drawalpha:
Allow nodes to be drawn with transparency (e.g. water), ``--drawalpha``

extent:
Don't output any imagery, just print the extent of the full map, ``--extent``

noshading:
Don't draw shading on nodes, ``--noshading``

Expand Down
21 changes: 21 additions & 0 deletions TileGenerator.cpp
Expand Up @@ -208,6 +208,27 @@ void TileGenerator::parseColorsFile(const std::string &fileName)
parseColorsStream(in);
}

void TileGenerator::printGeometry(const std::string &input)
{
string input_path = input;
if (input_path[input.length() - 1] != PATH_SEPARATOR) {
input_path += PATH_SEPARATOR;
}

openDb(input_path);
loadBlocks();

std::cout << "Map extent: "
<< m_xMin*16 << ":" << m_zMin*16
<< "+" << (m_xMax - m_xMin+1)*16
<< "+" << (m_zMax - m_zMin+1)*16
<< std::endl;

closeDatabase();

}


void TileGenerator::generate(const std::string &input, const std::string &output)
{
string input_path = input;
Expand Down
1 change: 1 addition & 0 deletions include/TileGenerator.h
Expand Up @@ -86,6 +86,7 @@ class TileGenerator
void parseColorsFile(const std::string &fileName);
void setBackend(std::string backend);
void generate(const std::string &input, const std::string &output);
void printGeometry(const std::string &input);
void setZoom(int zoom);
void setScales(uint flags);

Expand Down
11 changes: 10 additions & 1 deletion mapper.cpp
Expand Up @@ -28,6 +28,7 @@ void usage()
" --max-y <y>\n"
" --backend <backend>\n"
" --geometry x:y+w+h\n"
" --extent\n"
" --zoom <zoomlevel>\n"
" --colors <colors.txt>\n"
" --scales [t][b][l][r]\n"
Expand Down Expand Up @@ -80,6 +81,7 @@ int main(int argc, char *argv[])
{"noshading", no_argument, 0, 'H'},
{"backend", required_argument, 0, 'd'},
{"geometry", required_argument, 0, 'g'},
{"extent", no_argument, 0, 'E'},
{"min-y", required_argument, 0, 'a'},
{"max-y", required_argument, 0, 'c'},
{"zoom", required_argument, 0, 'z'},
Expand All @@ -95,6 +97,7 @@ int main(int argc, char *argv[])
TileGenerator generator;
int option_index = 0;
int c = 0;
bool onlyPrintExtent = false;
while (1) {
c = getopt_long(argc, argv, "hi:o:", long_options, &option_index);
if (c == -1) {
Expand Down Expand Up @@ -139,6 +142,9 @@ int main(int argc, char *argv[])
case 'e':
generator.setDrawAlpha(true);
break;
case 'E':
onlyPrintExtent = true;
break;
case 'H':
generator.setShading(false);
break;
Expand Down Expand Up @@ -206,7 +212,10 @@ int main(int argc, char *argv[])
colors = search_colors(input);
try {
generator.parseColorsFile(colors);
generator.generate(input, output);
if (onlyPrintExtent)
generator.printGeometry(input);
else
generator.generate(input, output);
} catch(std::runtime_error e) {
std::cerr << "Exception: " << e.what() << std::endl;
return 1;
Expand Down
4 changes: 4 additions & 0 deletions minetestmapper.6
Expand Up @@ -72,6 +72,10 @@ Use specific map backend; supported: *sqlite3*, *leveldb*, *redis*, *postgresql*
.BR \-\-geometry " " \fIgeometry\fR
Limit area to specific geometry (*x:y+w+h* where x and y specify the lower left corner), e.g. "--geometry -800:-800+1600+1600"

.TP
.BR \-\-extent " " \fIextent\fR
Dont render the image, dust print the extent of the map that would be generated, in the same format as the geometry above.

.TP
.BR \-\-zoom " " \fIfactor\fR
Zoom the image by using more than one pixel per node, e.g. "--zoom 4"
Expand Down

0 comments on commit fa5755a

Please sign in to comment.