本文整理汇总了C++中CTexture::addPatch方法的典型用法代码示例。如果您正苦于以下问题:C++ CTexture::addPatch方法的具体用法?C++ CTexture::addPatch怎么用?C++ CTexture::addPatch使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTexture
的用法示例。
在下文中一共展示了CTexture::addPatch方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: newTextureFromPatch
/* TextureXPanel::newTextureFromPatch
* Creates a new texture called [name] from [patch]. The new texture
* will be set to the dimensions of the patch, with the patch added
* at 0,0
*******************************************************************/
CTexture* TextureXPanel::newTextureFromPatch(string name, string patch)
{
// Create new texture
CTexture* tex = new CTexture();
tex->setName(name);
tex->setState(2);
// Setup texture scale
if (texturex.getFormat() == TXF_TEXTURES)
{
tex->setScale(1, 1);
tex->setExtended(true);
}
else
tex->setScale(0, 0);
// Add patch
tex->addPatch(patch, 0, 0);
// Load patch image (to determine dimensions)
SImage image;
tex->loadPatchImage(0, image);
// Set dimensions
tex->setWidth(image.getWidth());
tex->setHeight(image.getHeight());
// Update variables
modified = true;
// Return the new texture
return tex;
}
示例2: readTEXTUREXData
//.........这里部分代码省略.........
if (txformat == TXF_NAMELESS) {
nltdef_t nameless;
// Auto-naming mechanism taken from DeuTex
if (a > 99999) {
wxLogMessage("Error: More than 100000 nameless textures");
return false;
}
char temp[9] = "";
sprintf (temp, "TEX%05d", a);
memcpy(tdef.name, temp, 8);
// Read texture info
if (!texturex->read(&nameless, 8)) {
wxLogMessage("Error: TEXTUREx entry is corrupt (can't read nameless definition #%d)", a);
return false;
}
// Copy data to permanent structure
tdef.flags = nameless.flags;
tdef.scale[0] = nameless.scale[0];
tdef.scale[1] = nameless.scale[1];
tdef.width = nameless.width;
tdef.height = nameless.height;
}
else if (!texturex->read(&tdef, 16)) {
wxLogMessage("Error: TEXTUREx entry is corrupt, (can't read texture definition #%d)", a);
return false;
}
// Skip unused
if (txformat != TXF_STRIFE11) {
if (!texturex->seek(4, SEEK_CUR)) {
wxLogMessage("Error: TEXTUREx entry is corrupt (can't skip dummy data past #%d)", a);
return false;
}
}
// Create texture
CTexture* tex = new CTexture();
tex->name = wxString::FromAscii(tdef.name, 8);
tex->width = wxINT16_SWAP_ON_BE(tdef.width);
tex->height = wxINT16_SWAP_ON_BE(tdef.height);
tex->scale_x = tdef.scale[0]/8.0;
tex->scale_y = tdef.scale[1]/8.0;
// Set flags
if (tdef.flags & TX_WORLDPANNING)
tex->world_panning = true;
// Read patches
int16_t n_patches = 0;
if (!texturex->read(&n_patches, 2)) {
wxLogMessage("Error: TEXTUREx entry is corrupt (can't read patchcount #%d)", a);
return false;
}
//wxLogMessage("Texture #%d: %d patch%s", a, n_patches, n_patches == 1 ? "" : "es");
for (uint16_t p = 0; p < n_patches; p++) {
// Read patch definition
tx_patch_t pdef;
if (!texturex->read(&pdef, 6)) {
wxLogMessage("Error: TEXTUREx entry is corrupt (can't read patch definition #%d:%d)", a, p);
wxLogMessage("Lump size %d, offset %d", texturex->getSize(), texturex->currentPos());
return false;
}
// Skip unused
if (txformat != TXF_STRIFE11) {
if (!texturex->seek(4, SEEK_CUR)) {
wxLogMessage("Error: TEXTUREx entry is corrupt (can't skip dummy data past #%d:%d)", a, p);
return false;
}
}
// Add it to the texture
string patch;
if (txformat == TXF_JAGUAR) {
patch = tex->name.Upper();
} else {
patch = patch_table.patchName(pdef.patch);
}
if (patch.IsEmpty()) {
//wxLogMessage("Warning: Texture %s contains patch %d which is invalid - may be incorrect PNAMES entry", CHR(tex->getName()), pdef.patch);
patch = S_FMT("INVPATCH%04d", pdef.patch);
}
tex->addPatch(patch, pdef.left, pdef.top);
}
// Add texture to list
addTexture(tex);
}
// Clean up
delete[] offsets;
return true;
}