Minor refactor "first visible index" -> "base index"

This commit is contained in:
David Capello 2020-10-30 20:57:36 -03:00
parent c2e5e69882
commit a3286fc20a
15 changed files with 43 additions and 38 deletions

View File

@ -1023,9 +1023,11 @@ default_new_layer_name = New Layer
new_tileset = New Tileset new_tileset = New Tileset
grid_width = Grid Width: grid_width = Grid Width:
grid_height = Grid Height: grid_height = Grid Height:
first_visible_index = First Visible Index: base_index = Base Index:
first_visible_index_tooltip = <<<END base_tooltip = <<<END
Change how you see the tile of index 1 (you can set it to 0 or any value). Visible aid to see the first tile with content from the tileset
as index 1 (by default, one-based index) or other value.
E.g. you can use 0 here for zero-based indexing.
END END
[new_sprite] [new_sprite]

View File

@ -13,9 +13,9 @@
<label text="@.grid_height" /> <label text="@.grid_height" />
<expr id="grid_height" text="" /> <expr id="grid_height" text="" />
<label text="@.first_visible_index" /> <label text="@.base_index" />
<expr id="first_visible_index" text="1" tooltip="@.first_visible_index_tooltip" /> <expr id="base_index" text="1" tooltip="@.base_tooltip" />
<booxfiller cell_hspan="2" /> <boxfiller cell_hspan="2" />
</grid> </grid>
</vbox> </vbox>
</gui> </gui>

View File

@ -374,9 +374,12 @@ the Tags chunk.
DWORD Number of tiles DWORD Number of tiles
WORD Tile Width WORD Tile Width
WORD Tile Height WORD Tile Height
SHORT Number to show in the screen from the tile with index 1 and SHORT Base Index: Number to show in the screen from the tile with
so on (by default this is field is 1, so the data that is index 1 and so on (by default this is field is 1, so the data
displayed is equivalent to the data in memory) that is displayed is equivalent to the data in memory). But it
can be 0 to display zero-based indexing (this field isn't used
for the representation of the data in the file, it's just for
UI purposes).
BYTE[14] Reserved BYTE[14] Reserved
STRING Name of the tileset STRING Name of the tileset
+ If flag 1 is set + If flag 1 is set

View File

@ -195,7 +195,7 @@ void NewLayerCommand::onExecute(Context* context)
TilesetSelector::Info tilesetInfo; TilesetSelector::Info tilesetInfo;
tilesetInfo.newTileset = true; tilesetInfo.newTileset = true;
tilesetInfo.grid = context->activeSite().grid(); tilesetInfo.grid = context->activeSite().grid();
tilesetInfo.firstVisibleIndex = 1; tilesetInfo.baseIndex = 1;
#ifdef ENABLE_UI #ifdef ENABLE_UI
// If params specify to ask the user about the name... // If params specify to ask the user about the name...
@ -268,7 +268,7 @@ void NewLayerCommand::onExecute(Context* context)
tileset_index tsi; tileset_index tsi;
if (tilesetInfo.newTileset) { if (tilesetInfo.newTileset) {
auto tileset = new Tileset(sprite, tilesetInfo.grid, 1); auto tileset = new Tileset(sprite, tilesetInfo.grid, 1);
tileset->setFirstVisibleIndex(tilesetInfo.firstVisibleIndex); tileset->setBaseIndex(tilesetInfo.baseIndex);
auto addTileset = new cmd::AddTileset(sprite, tileset); auto addTileset = new cmd::AddTileset(sprite, tileset);
tx(addTileset); tx(addTileset);

View File

@ -1283,7 +1283,7 @@ static void ase_file_write_tileset_chunk(FILE* f, FileOp* fop,
fputl(tileset->size(), f); fputl(tileset->size(), f);
fputw(tileset->grid().tileSize().w, f); fputw(tileset->grid().tileSize().w, f);
fputw(tileset->grid().tileSize().h, f); fputw(tileset->grid().tileSize().h, f);
fputw(short(tileset->firstVisibleIndex()), f); fputw(short(tileset->baseIndex()), f);
ase_file_write_padding(f, 14); ase_file_write_padding(f, 14);
ase_file_write_string(f, tileset->name()); // tileset name ase_file_write_string(f, tileset->name()); // tileset name

View File

@ -69,18 +69,18 @@ int Tileset_get_grid(lua_State* L)
return 1; return 1;
} }
int Tileset_get_firstVisibleIndex(lua_State* L) int Tileset_get_baseIndex(lua_State* L)
{ {
auto tileset = get_docobj<Tileset>(L, 1); auto tileset = get_docobj<Tileset>(L, 1);
lua_pushinteger(L, tileset->firstVisibleIndex()); lua_pushinteger(L, tileset->baseIndex());
return 1; return 1;
} }
int Tileset_set_firstVisibleIndex(lua_State* L) int Tileset_set_baseIndex(lua_State* L)
{ {
auto tileset = get_docobj<Tileset>(L, 1); auto tileset = get_docobj<Tileset>(L, 1);
int i = lua_tointeger(L, 2); int i = lua_tointeger(L, 2);
tileset->setFirstVisibleIndex(i); tileset->setBaseIndex(i);
return 0; return 0;
} }
@ -96,7 +96,7 @@ const luaL_Reg Tileset_methods[] = {
const Property Tileset_properties[] = { const Property Tileset_properties[] = {
{ "name", Tileset_get_name, Tileset_set_name }, { "name", Tileset_get_name, Tileset_set_name },
{ "grid", Tileset_get_grid, nullptr }, { "grid", Tileset_get_grid, nullptr },
{ "firstVisibleIndex", Tileset_get_firstVisibleIndex, Tileset_set_firstVisibleIndex }, { "baseIndex", Tileset_get_baseIndex, Tileset_set_baseIndex },
{ nullptr, nullptr, nullptr } { nullptr, nullptr, nullptr }
}; };

View File

@ -1162,7 +1162,7 @@ void Editor::drawTileNumbers(ui::Graphics* g, const Cel* cel)
+ mainTilePosition(); + mainTilePosition();
int ti_offset = int ti_offset =
static_cast<LayerTilemap*>(cel->layer())->tileset()->firstVisibleIndex() - 1; static_cast<LayerTilemap*>(cel->layer())->tileset()->baseIndex() - 1;
const gfx::Rect rc = cel->bounds(); const gfx::Rect rc = cel->bounds();
const doc::Image* image = cel->image(); const doc::Image* image = cel->image();

View File

@ -472,17 +472,17 @@ public:
} }
else { else {
// TODO could the site came from the Indicators or StatusBar itself // TODO could the site came from the Indicators or StatusBar itself
int firstVisibleIndex = 1; int baseIndex = 1;
Site site = UIContext::instance()->activeSite(); Site site = UIContext::instance()->activeSite();
if (site.tileset()) if (site.tileset())
firstVisibleIndex = site.tileset()->firstVisibleIndex(); baseIndex = site.tileset()->baseIndex();
doc::tile_index ti = doc::tile_geti(tile); doc::tile_index ti = doc::tile_geti(tile);
doc::tile_flags tf = doc::tile_getf(tile); doc::tile_flags tf = doc::tile_getf(tile);
if (firstVisibleIndex < 0) if (baseIndex < 0)
str += fmt::format("{}", ((int)ti) + firstVisibleIndex - 1); str += fmt::format("{}", ((int)ti) + baseIndex - 1);
else else
str += fmt::format("{}", ti + firstVisibleIndex - 1); str += fmt::format("{}", ti + baseIndex - 1);
if (tf) { if (tf) {
if (tf & doc::tile_f_flipx) str += " FlipX"; if (tf & doc::tile_f_flipx) str += " FlipX";
if (tf & doc::tile_f_flipy) str += " FlipY"; if (tf & doc::tile_f_flipy) str += " FlipY";

View File

@ -145,11 +145,11 @@ void TileButton::onPaint(PaintEvent& ev)
// Draw text // Draw text
if (m_tile != doc::notile) { if (m_tile != doc::notile) {
int firstVisibleIndex = 1; int baseIndex = 1;
if (site.tileset()) if (site.tileset())
firstVisibleIndex = site.tileset()->firstVisibleIndex(); baseIndex = site.tileset()->baseIndex();
std::string str = fmt::format("{}", doc::tile_geti(m_tile) + firstVisibleIndex - 1); std::string str = fmt::format("{}", doc::tile_geti(m_tile) + baseIndex - 1);
setTextQuiet(str.c_str()); setTextQuiet(str.c_str());
// TODO calc a proper color for the text // TODO calc a proper color for the text

View File

@ -27,7 +27,7 @@ TilesetSelector::TilesetSelector(const doc::Sprite* sprite,
gridWidth()->setTextf("%d", info.grid.tileSize().w); gridWidth()->setTextf("%d", info.grid.tileSize().w);
gridHeight()->setTextf("%d", info.grid.tileSize().h); gridHeight()->setTextf("%d", info.grid.tileSize().h);
firstVisibleIndex()->setTextf("%d", info.firstVisibleIndex); baseIndex()->setTextf("%d", info.baseIndex);
doc::tileset_index tsi = 0; doc::tileset_index tsi = 0;
for (doc::Tileset* tileset : *sprite->tilesets()) { for (doc::Tileset* tileset : *sprite->tilesets()) {
@ -60,7 +60,7 @@ TilesetSelector::Info TilesetSelector::getInfo()
info.newTileset = true; info.newTileset = true;
info.grid = doc::Grid::MakeRect(sz); info.grid = doc::Grid::MakeRect(sz);
info.firstVisibleIndex = firstVisibleIndex()->textInt(); info.baseIndex = baseIndex()->textInt();
} }
else { else {
info.newTileset = false; info.newTileset = false;

View File

@ -25,7 +25,7 @@ namespace app {
struct Info { struct Info {
bool newTileset = true; bool newTileset = true;
doc::Grid grid; doc::Grid grid;
int firstVisibleIndex = 1; int baseIndex = 1;
doc::tileset_index tsi = 0; doc::tileset_index tsi = 0;
}; };

View File

@ -1068,7 +1068,7 @@ void AsepriteDecoder::readTilesetChunk(doc::Sprite* sprite,
const doc::tile_index ntiles = read32(); const doc::tile_index ntiles = read32();
const int w = read16(); const int w = read16();
const int h = read16(); const int h = read16();
const int firstVisibleIndex = short(read16()); const int baseIndex = short(read16());
readPadding(14); readPadding(14);
const std::string name = readString(); const std::string name = readString();
@ -1083,7 +1083,7 @@ void AsepriteDecoder::readTilesetChunk(doc::Sprite* sprite,
doc::Grid grid(gfx::Size(w, h)); doc::Grid grid(gfx::Size(w, h));
auto tileset = new doc::Tileset(sprite, grid, ntiles); auto tileset = new doc::Tileset(sprite, grid, ntiles);
tileset->setName(name); tileset->setName(name);
tileset->setFirstVisibleIndex(firstVisibleIndex); tileset->setBaseIndex(baseIndex);
if (flags & ASE_TILESET_FLAG_EXTERNAL_FILE) { if (flags & ASE_TILESET_FLAG_EXTERNAL_FILE) {
const uint32_t extFileId = read32(); // filename ID in the external files chunk const uint32_t extFileId = read32(); // filename ID in the external files chunk

View File

@ -45,8 +45,8 @@ namespace doc {
const std::string& name() const { return m_name; } const std::string& name() const { return m_name; }
void setName(const std::string& name) { m_name = name; } void setName(const std::string& name) { m_name = name; }
int firstVisibleIndex() const { return m_firstVisibleIndex; } int baseIndex() const { return m_baseIndex; }
void setFirstVisibleIndex(int index) { m_firstVisibleIndex = index; } void setBaseIndex(int index) { m_baseIndex = index; }
int getMemSize() const override; int getMemSize() const override;
@ -124,7 +124,7 @@ namespace doc {
Tiles m_tiles; Tiles m_tiles;
TilesetHashTable m_hash; TilesetHashTable m_hash;
std::string m_name; std::string m_name;
int m_firstVisibleIndex = 1; int m_baseIndex = 1;
struct External { struct External {
std::string filename; std::string filename;
tileset_index tileset; tileset_index tileset;

View File

@ -71,7 +71,7 @@ Tileset* read_tileset(std::istream& is,
if (isOldVersion) if (isOldVersion)
*isOldVersion = false; *isOldVersion = false;
tileset->setFirstVisibleIndex(1); tileset->setBaseIndex(1);
} }
// Old tileset used in internal versions (this was added to recover // Old tileset used in internal versions (this was added to recover
// old files, maybe in a future we could remove this code) // old files, maybe in a future we could remove this code)

View File

@ -19,14 +19,14 @@ void fix_old_tileset(
// case we can use this tileset as a new tileset without any // case we can use this tileset as a new tileset without any
// conversion. // conversion.
if (tileset->size() > 0 && is_empty_image(tileset->get(0).get())) { if (tileset->size() > 0 && is_empty_image(tileset->get(0).get())) {
tileset->setFirstVisibleIndex(1); tileset->setBaseIndex(1);
} }
else { else {
// Add the empty tile in the index = 0 // Add the empty tile in the index = 0
tileset->insert(0, tileset->makeEmptyTile()); tileset->insert(0, tileset->makeEmptyTile());
// The tile 1 will be displayed as tile 0 in the editor // The tile 1 will be displayed as tile 0 in the editor
tileset->setFirstVisibleIndex(0); tileset->setBaseIndex(0);
} }
} }
@ -36,7 +36,7 @@ void fix_old_tilemap(
const tile_t tileIDMask, const tile_t tileIDMask,
const tile_t tileFlagsMask) const tile_t tileFlagsMask)
{ {
int delta = (tileset->firstVisibleIndex() == 0 ? 1: 0); int delta = (tileset->baseIndex() == 0 ? 1: 0);
// Convert old empty tile (0xffffffff) to new empty tile (index 0 = notile) // Convert old empty tile (0xffffffff) to new empty tile (index 0 = notile)
transform_image<TilemapTraits>( transform_image<TilemapTraits>(