Add a default color for nodes
This is useful to show invisible ('air' or 'invalid') nodes in blocks that are in the database using a different color than blocks that are not in the database (which will have no color at all, causing the background color to show).
This commit is contained in:
parent
5369adb937
commit
ced0390611
@ -12,6 +12,11 @@
|
|||||||
are: point, line, rectangle, ellipse (circle), text.
|
are: point, line, rectangle, ellipse (circle), text.
|
||||||
Translucency (alpha) is supported, although for ellipses, it does not
|
Translucency (alpha) is supported, although for ellipses, it does not
|
||||||
work as expected (due to a bug in libgd)
|
work as expected (due to a bug in libgd)
|
||||||
|
- A default color can be specified for invisible/undefined nodes in rendered
|
||||||
|
blocks Normally, such nodes are not drawn, so they have the background
|
||||||
|
color; If a different default color is specified, undefined/invisible
|
||||||
|
nodes in defined blocks get the default color, and can be distinguished
|
||||||
|
from undefined blocks (which still have the regular background color).
|
||||||
|
|
||||||
Enhancements:
|
Enhancements:
|
||||||
- Failure to process a command-line option now causes a specific error message.
|
- Failure to process a command-line option now causes a specific error message.
|
||||||
|
@ -137,6 +137,13 @@ colors <file>:
|
|||||||
bgcolor:
|
bgcolor:
|
||||||
Background color of image, `--bgcolor #ffffff`
|
Background color of image, `--bgcolor #ffffff`
|
||||||
|
|
||||||
|
blockcolor:
|
||||||
|
Default color of nodes in blocks that are in the database, `--blockcolor #ffffff`
|
||||||
|
|
||||||
|
If a block is in the database, but some of its nodes are not visible (because they are
|
||||||
|
air, or 'invalid', the nodes are drawn in this color (as opposed to the background
|
||||||
|
color, which shows for blocks that are not in the database)
|
||||||
|
|
||||||
scalecolor:
|
scalecolor:
|
||||||
Color of scale, `--scalecolor #000000`
|
Color of scale, `--scalecolor #000000`
|
||||||
|
|
||||||
|
@ -122,6 +122,7 @@ TileGenerator::TileGenerator():
|
|||||||
verboseStatistics(false),
|
verboseStatistics(false),
|
||||||
progressIndicator(false),
|
progressIndicator(false),
|
||||||
m_bgColor(255, 255, 255),
|
m_bgColor(255, 255, 255),
|
||||||
|
m_blockDefaultColor(0, 0, 0, 0),
|
||||||
m_scaleColor(0, 0, 0),
|
m_scaleColor(0, 0, 0),
|
||||||
m_originColor(255, 0, 0),
|
m_originColor(255, 0, 0),
|
||||||
m_playerColor(255, 0, 0),
|
m_playerColor(255, 0, 0),
|
||||||
@ -175,6 +176,13 @@ void TileGenerator::setBgColor(const Color &bgColor)
|
|||||||
m_bgColor = bgColor;
|
m_bgColor = bgColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TileGenerator::setBlockDefaultColor(const Color &color)
|
||||||
|
{
|
||||||
|
m_blockDefaultColor = color;
|
||||||
|
// Any value will do, except for 0
|
||||||
|
m_blockDefaultColor.a = 1;
|
||||||
|
}
|
||||||
|
|
||||||
void TileGenerator::setShrinkGeometry(bool shrink)
|
void TileGenerator::setShrinkGeometry(bool shrink)
|
||||||
{
|
{
|
||||||
m_shrinkGeometry = shrink;
|
m_shrinkGeometry = shrink;
|
||||||
@ -801,7 +809,7 @@ void TileGenerator::pushPixelRows(int zPosLimit) {
|
|||||||
{ int ix = mapX2ImageX(mapX); assert(ix - m_border >= 0 && ix - m_border < m_pictWidth); }
|
{ int ix = mapX2ImageX(mapX); assert(ix - m_border >= 0 && ix - m_border < m_pictWidth); }
|
||||||
{ int iy = mapY2ImageY(mapY); assert(iy - m_border >= 0 && iy - m_border < m_pictHeight); }
|
{ int iy = mapY2ImageY(mapY); assert(iy - m_border >= 0 && iy - m_border < m_pictHeight); }
|
||||||
#endif
|
#endif
|
||||||
if (pixel.is_valid())
|
if (pixel.is_valid() || pixel.color().to_uint())
|
||||||
m_image->tpixels[mapY2ImageY(mapY)][mapX2ImageX(mapX)] = pixel.color().to_libgd();
|
m_image->tpixels[mapY2ImageY(mapY)][mapX2ImageX(mapX)] = pixel.color().to_libgd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1203,6 +1211,11 @@ inline void TileGenerator::renderMapBlock(const ustring &mapBlock, const BlockPo
|
|||||||
if (m_readedPixels[z] & (1 << x)) {
|
if (m_readedPixels[z] & (1 << x)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (m_blockDefaultColor.to_uint() && !m_blockPixelAttributes.attribute(zBegin + 15 - z,xBegin + x).color().to_uint()) {
|
||||||
|
PixelAttribute pixel = PixelAttribute(m_blockDefaultColor, NAN);
|
||||||
|
m_blockPixelAttributes.attribute(zBegin + 15 - z,xBegin + x) = pixel;
|
||||||
|
rowIsEmpty = false;
|
||||||
|
}
|
||||||
for (int y = maxY; y >= minY; --y) {
|
for (int y = maxY; y >= minY; --y) {
|
||||||
int position = x + (y << 4) + (z << 8);
|
int position = x + (y << 4) + (z << 8);
|
||||||
int content = readBlockContent(mapData, version, position);
|
int content = readBlockContent(mapData, version, position);
|
||||||
|
@ -83,6 +83,7 @@ public:
|
|||||||
TileGenerator();
|
TileGenerator();
|
||||||
~TileGenerator();
|
~TileGenerator();
|
||||||
void setBgColor(const Color &bgColor);
|
void setBgColor(const Color &bgColor);
|
||||||
|
void setBlockDefaultColor(const Color &olor);
|
||||||
void setScaleColor(const Color &scaleColor);
|
void setScaleColor(const Color &scaleColor);
|
||||||
void setOriginColor(const Color &originColor);
|
void setOriginColor(const Color &originColor);
|
||||||
void setPlayerColor(const Color &playerColor);
|
void setPlayerColor(const Color &playerColor);
|
||||||
@ -159,6 +160,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Color m_bgColor;
|
Color m_bgColor;
|
||||||
|
Color m_blockDefaultColor;
|
||||||
Color m_scaleColor;
|
Color m_scaleColor;
|
||||||
Color m_originColor;
|
Color m_originColor;
|
||||||
Color m_playerColor;
|
Color m_playerColor;
|
||||||
|
@ -25,6 +25,7 @@ using namespace std;
|
|||||||
#define OPT_SQLITE_CACHEWORLDROW 0x81
|
#define OPT_SQLITE_CACHEWORLDROW 0x81
|
||||||
#define OPT_PROGRESS_INDICATOR 0x82
|
#define OPT_PROGRESS_INDICATOR 0x82
|
||||||
#define OPT_DRAW_OBJECT 0x83
|
#define OPT_DRAW_OBJECT 0x83
|
||||||
|
#define OPT_BLOCKCOLOR 0x84
|
||||||
#define OPT_VERBOSE_SEARCH_COLORS 0x86
|
#define OPT_VERBOSE_SEARCH_COLORS 0x86
|
||||||
|
|
||||||
// Will be replaced with the actual name and location of the executable (if found)
|
// Will be replaced with the actual name and location of the executable (if found)
|
||||||
@ -61,6 +62,7 @@ void usage()
|
|||||||
" -o/--output <output_image.png>\n"
|
" -o/--output <output_image.png>\n"
|
||||||
" --colors <file>\n"
|
" --colors <file>\n"
|
||||||
" --bgcolor <color>\n"
|
" --bgcolor <color>\n"
|
||||||
|
" --blockcolor <color>\n"
|
||||||
" --scalecolor <color>\n"
|
" --scalecolor <color>\n"
|
||||||
" --playercolor <color>\n"
|
" --playercolor <color>\n"
|
||||||
" --origincolor <color>\n"
|
" --origincolor <color>\n"
|
||||||
@ -516,6 +518,7 @@ int main(int argc, char *argv[])
|
|||||||
{"output", required_argument, 0, 'o'},
|
{"output", required_argument, 0, 'o'},
|
||||||
{"colors", required_argument, 0, 'C'},
|
{"colors", required_argument, 0, 'C'},
|
||||||
{"bgcolor", required_argument, 0, 'b'},
|
{"bgcolor", required_argument, 0, 'b'},
|
||||||
|
{"blockcolor", required_argument, 0, OPT_BLOCKCOLOR},
|
||||||
{"scalecolor", required_argument, 0, 's'},
|
{"scalecolor", required_argument, 0, 's'},
|
||||||
{"origincolor", required_argument, 0, 'r'},
|
{"origincolor", required_argument, 0, 'r'},
|
||||||
{"playercolor", required_argument, 0, 'p'},
|
{"playercolor", required_argument, 0, 'p'},
|
||||||
@ -596,6 +599,9 @@ int main(int argc, char *argv[])
|
|||||||
case 'b':
|
case 'b':
|
||||||
generator.setBgColor(Color(optarg, 0));
|
generator.setBgColor(Color(optarg, 0));
|
||||||
break;
|
break;
|
||||||
|
case OPT_BLOCKCOLOR:
|
||||||
|
generator.setBlockDefaultColor(Color(optarg, 0));
|
||||||
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
generator.setScaleColor(Color(optarg,0));
|
generator.setScaleColor(Color(optarg,0));
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user