Added: Border duplication option to texture atlas builder.
--HG-- branch : experimental-ui-scaling
This commit is contained in:
parent
bc5bf44c18
commit
ddcdc8b8fb
1 changed files with 24 additions and 4 deletions
|
@ -214,6 +214,7 @@ int main(int argc, char **argv)
|
||||||
args.addArg("x", "extract", "", "Extract all interface elements from <output_filename> to <input_path>.");
|
args.addArg("x", "extract", "", "Extract all interface elements from <output_filename> to <input_path>.");
|
||||||
args.addAdditionalArg("output_filename", "PNG or TGA file to generate", true);
|
args.addAdditionalArg("output_filename", "PNG or TGA file to generate", true);
|
||||||
args.addAdditionalArg("input_path", "Path that containts interfaces elements", false);
|
args.addAdditionalArg("input_path", "Path that containts interfaces elements", false);
|
||||||
|
args.addArg("b", "border", "", "Duplicate icon border to allow bilinear filtering");
|
||||||
|
|
||||||
if (!args.parse(argc, argv)) return 1;
|
if (!args.parse(argc, argv)) return 1;
|
||||||
|
|
||||||
|
@ -227,6 +228,13 @@ int main(int argc, char **argv)
|
||||||
existingUVfilename = args.getArg("s").front();
|
existingUVfilename = args.getArg("s").front();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
uint borderSize = 0;
|
||||||
|
if (args.haveArg("b"))
|
||||||
|
{
|
||||||
|
borderSize = 1;
|
||||||
|
}
|
||||||
|
|
||||||
// extract all interface elements
|
// extract all interface elements
|
||||||
bool extractElements = args.haveArg("x");
|
bool extractElements = args.haveArg("x");
|
||||||
|
|
||||||
|
@ -407,6 +415,18 @@ int main(int argc, char **argv)
|
||||||
pBtmp->convertToType(CBitmap::RGBA);
|
pBtmp->convertToType(CBitmap::RGBA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// duplicate icon border
|
||||||
|
if (borderSize > 0)
|
||||||
|
{
|
||||||
|
NLMISC::CBitmap *tmp = new NLMISC::CBitmap;
|
||||||
|
tmp->resize(pBtmp->getWidth(), pBtmp->getHeight());
|
||||||
|
tmp->blit(pBtmp, 0, 0);
|
||||||
|
tmp->resample(tmp->getWidth() + borderSize * 2, tmp->getHeight() + borderSize * 2);
|
||||||
|
tmp->blit(pBtmp, borderSize, borderSize);
|
||||||
|
delete pBtmp;
|
||||||
|
pBtmp = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
AllMaps[i] = pBtmp;
|
AllMaps[i] = pBtmp;
|
||||||
}
|
}
|
||||||
catch (const NLMISC::Exception &e)
|
catch (const NLMISC::Exception &e)
|
||||||
|
@ -461,10 +481,10 @@ int main(int argc, char **argv)
|
||||||
putIn (AllMaps[i], &GlobalTexture, x, y);
|
putIn (AllMaps[i], &GlobalTexture, x, y);
|
||||||
putIn (AllMaps[i], &GlobalMask, x, y, false);
|
putIn (AllMaps[i], &GlobalMask, x, y, false);
|
||||||
|
|
||||||
UVMin[i].U = (float)x;
|
UVMin[i].U = (float)x + borderSize;
|
||||||
UVMin[i].V = (float)y;
|
UVMin[i].V = (float)y + borderSize;
|
||||||
UVMax[i].U = (float)x+AllMaps[i]->getWidth();
|
UVMax[i].U = (float)x + AllMaps[i]->getWidth() - borderSize;
|
||||||
UVMax[i].V = (float)y+AllMaps[i]->getHeight();
|
UVMax[i].V = (float)y + AllMaps[i]->getHeight() - borderSize;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// Do not remove this is useful for debugging
|
// Do not remove this is useful for debugging
|
||||||
|
|
Loading…
Reference in a new issue