/* 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; }
// ----------------------------------------------------------------------------- // Creates a new, empty texture // ----------------------------------------------------------------------------- void TextureXPanel::newTexture() { // Prompt for new texture name string name = wxGetTextFromUser("Enter a texture name:", "New Texture"); // Do nothing if no name entered if (name.IsEmpty()) return; // Process name if (!TxListIsTextures(texturex_)) { name = name.Upper().Truncate(8); } // Create new texture CTexture* tex = new CTexture(); tex->setName(name); tex->setState(2); // Default size = 64x128 tex->setWidth(64); tex->setHeight(128); // Setup texture scale if (TxListIsTextures(texturex_)) { tex->setScale(1, 1); tex->setExtended(true); } else tex->setScale(0, 0); // Add it after the last selected item int selected = list_textures_->getItemIndex(list_textures_->getLastSelected()); if (selected == -1) selected = texturex_.nTextures() - 1; // Add to end of the list if nothing selected texturex_.addTexture(tex, selected + 1); // Record undo level undo_manager_->beginRecord("New Texture"); undo_manager_->recordUndoStep(new TextureCreateDeleteUS(this, tex, true)); undo_manager_->endRecord(true); // Update texture list list_textures_->updateList(); // Select the new texture list_textures_->clearSelection(); list_textures_->selectItem(selected + 1); list_textures_->EnsureVisible(selected + 1); // Update variables modified_ = true; }