Compare commits

...

10 Enmetoj

Author SHA1 Message Date
Jaidyn Ann 4d63521f54 Update source URL 2024-01-30 18:18:48 -06:00
Jaidyn Ann 4c8688190a Add setting for inventory-size (i4_inventory_size)
Also removes the “legacy inventory” user-setting,
and defaults to 32 for inventory size.
I feel that the individual players shouldn’t be
able to tweak their inventory-size, that’s a
server-level sort of setting.
2024-01-15 12:52:18 -06:00
Jaidyn Ann 80ab1f0a3c When reducing inventory’s size, drop extra items
Now items that can’t fit in the new inventory are
dropped, so the player doesn’t lose anything.
2024-01-13 13:01:48 -06:00
Jaidyn Ann 66ddd2571c Only display “home” button with home privilege 2024-01-12 21:09:09 -06:00
Jaidyn Ann 73627499da Update source URL 2024-01-12 14:15:57 -06:00
Jaidyn Ann e49a197fc3 Add conversion mod to transfer data from i3→14
This makes i4 a modpack; files have been moved correspondingly.
2024-01-12 13:18:10 -06:00
Jaidyn Ann db5e959063 Reformat licensing information 2024-01-12 12:52:30 -06:00
Jaidyn Ann e8a34fa861 Update README.md 2024-01-12 11:16:12 -06:00
Jaidyn Ann 83d9074e06 Show/hide footer_button with access() function
Now those with this function defined can be hidden.
2024-01-12 03:39:30 -06:00
Jaidyn Ann 4f0b41b61f Add example screenshots to API.md 2024-01-12 03:31:41 -06:00
138 changed files with 193 additions and 143 deletions

View File

@ -1,24 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
- Mod version? Release or git?
- Engine version?
- LuaJIT enabled?
- Operating system?
- Did you try to disable other mods except i3?

View File

@ -1,21 +0,0 @@
name: Luacheck
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup lua
uses: leafo/gh-actions-lua@v8
with:
luaVersion: 5.1
- name: Setup luarocks
uses: leafo/gh-actions-luarocks@v4
- name: Setup luacheck
run: luarocks install luacheck
- name: Run luacheck linter
run: cd util; lua luacheck.lua

BIN
.res/api-footer_button.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

BIN
.res/api-tabs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 371 B

After

Width:  |  Height:  |  Size: 371 B

View File

Before

Width:  |  Height:  |  Size: 248 B

After

Width:  |  Height:  |  Size: 248 B

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

9
API.md
View File

@ -16,6 +16,8 @@
### Tabs
![Screenshot of the inventory with the below example tab in focus.](.res/api-tabs.png)
#### `i4.new_tab(name, def)`
- `name` is the tab name.
@ -26,8 +28,8 @@ Custom tabs can be added to the `i4` inventory as follow (example):
```Lua
i4.new_tab("stuff", {
description = "Stuff",
image = "image.png", -- Optional, add an image next to the tab description
slots = true -- Optional, whether the inventory slots are shown or not. Disabled by default.
image = "speech_icon.png", -- Optional, add an image next to the tab description
slots = true, -- Optional, whether the inventory slots are shown or not. Disabled by default.
--
-- The functions below are all optional
@ -90,6 +92,7 @@ A list of registered tabs.
---
### Footer buttons
![Screenshot of the inventory with the below example footer-button.](.res/api-footer_button.png)
`i4.new_footer_button(name, def)`
@ -235,7 +238,7 @@ Recipes can be registered from a given URL containing a JSON file (HTTP support
```Lua
i4.register_craft {
url = "https://raw.githubusercontent.com/minetest-mods/i4/main/tests/test_online_recipe.json"
url = "https://hak.xwx.moe/jadedctrl/minetest-i4/src/master/i4/tests/test_online_recipe.json"
}
```

View File

@ -1,23 +1,37 @@
Licenses of media (sounds)
--------------------------
# Licenses
## Media
### Sounds
Sounds by Lone_Wolf are under the [CC0](https://creativecommons.org/publicdomain/zero/1.0/):
* [`i3_tab.ogg`](sounds/i3_tab.ogg)
* [`i3_click.ogg`](sounds/i3_click.ogg)
* [`i3_cannot.ogg`](sounds/i3_cannot.ogg)
Lone_Wolf (CC0):
i3_tab.ogg
i3_click.ogg
i3_cannot.ogg
Sounds by MadPanCake are also under the CC0:
* [`i3_craft.ogg`](sounds/i3_craft.ogg) — https://freesound.org/people/MadPanCake/sounds/567849/
MadPanCake (CC0):
i3_craft.ogg (https://freesound.org/people/MadPanCake/sounds/567849/)
```
No Copyright
The person who associated a work with this deed has dedicated the work to the
public domain by waiving all of his or her rights to the work worldwide under
copyright law, including all related and neighboring rights, to the extent
allowed by law.
You can copy, modify, distribute and perform the work, even for commercial
purposes, all without asking permission.
For more details:
https://creativecommons.org/publicdomain/zero/1.0/
```
Licenses of media (textures)
----------------------------
paramat (CC BY-SA 3.0):
i3_arrow.png - derived from a texture by BlockMen (CC BY-SA 3.0)
i3_hotbar.png
### Textures
Textures by paramat are under the [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/):
* [`i3_arrow.png`](textures/i3_arrow.png) — derived from a texture by BlockMen (also CC BY-SA 3.0)
* [`i3_hotbar.png`](textures/i3_hotbar.png)
```
You are free to:
Share — copy and redistribute the material in any medium or format.
Adapt — remix, transform, and build upon the material for any purpose, even commercially.
@ -45,12 +59,15 @@ rights may limit how you use the material.
For more details:
http://creativecommons.org/licenses/by-sa/3.0/
```
License of source code #1 (MIT)
-------------------------------
## Source code
### MIT
Code from i3 by Jean-Patrick Guerrero and i3 contributors (SmallJoker & anonymous) is under the MIT license, as follows:
```
The MIT License (MIT)
Copyright (c) 2020-2023 Jean-Patrick Guerrero and contributors.
@ -72,11 +89,14 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
```
License of source code #2 (GPLv3)
---------------------------------
### GPLv3
Code for i4 by Jaidyn Ann is under the [GNU GPLv3](https://www.gnu.org/licenses/gpl-3.0.html), as follows:
```
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
@ -751,4 +771,4 @@ may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
```

View File

@ -1,61 +1,69 @@
![i4 logo](res/i4_logo_scaled.png)
# ![i4](.res/i4_logo_scaled.png)
#### **`i4`** is an inventory mod for Minetest.
![A screenshot of Minetest displaying i3s inventory.](.res/screenshot.png)
This mod features a modern, powerful inventory menu with a good user experience.
**`i4`** provides a rich [**API**](API.md) for mod developers who want to extend it.
[i4](https://hak.xwx.moe/jadedctrl/minetest-i4) is an inventory system for Minetest with a focus on cohesion. It is a fork of [i3](https://github.com/minetest-mods/i3), the “next-generation inventory.” Primary differences to `i3` include an extended [API](API.md), more efficient use of screen-space, and general house-keeping.
This mod requires **Minetest 5.6+**
This mod requires Minetest 5.6+, as it uses newer additions to the formspec API.
#### List of features:
- Crafting Guide (survival mode only)
- Progressive Mode¹
- Quick Crafting
- 3D Player Model Real-Time Preview
- Isometric Map Preview
- Inventory Sorting (+ options: compression, reverse mode, automation, etc.)
- Item List Compression (**`moreblocks`** is supported)
- Item Bookmarks
- Waypoints
- Bags
- Home
**¹** *This mode is a Terraria-like system that shows recipes you can craft from items you ever had in your inventory.
To enable it: `i4_progressive_mode = true` in `minetest.conf`.*
## Features
* Crafting guide
* Progressive mode
* Quick-crafting
* 3D player model real-time preview
* Isometric map preview
* Fine-tunable inventory sorting
* Item list compression (with `moreblocks` support)
* Item bookmarks
* Waypoints
* Bags
* Home (built-in or minetest_games `sethome`)
#### This mod officially supports the following mods:
- [**`3d_armor`**](https://content.minetest.net/packages/stu/3d_armor/)
- [**`skinsdb`**](https://content.minetest.net/packages/bell07/skinsdb/)
- [**`awards`**](https://content.minetest.net/packages/rubenwardy/awards/)
#### Recommendations
### Officially-supported mods
These mods have menus built-into i4:
* [**`3d_armor`**](https://content.minetest.net/packages/stu/3d_armor/)
* [**`skinsdb`**](https://content.minetest.net/packages/bell07/skinsdb/)
* [**`awards`**](https://content.minetest.net/packages/rubenwardy/awards/)
## Configuration
There is currently two [`minetest.conf`](https://wiki.minetest.net/Minetest.conf) settings used by i4:
* `i4_progressive_mode = false` — A discovery-based system, where the crafting guide only displays recipes whose components you have held before.
* `i4_inventory_size = 32` — Players inventory-size. Defaults to 32 (or 36, if i3 was previously in use). Only accepted values are 32 and 36.
## Notes
i4 uses a larger inventory than the usual inventories in Minetest games.
Thus, most chests will be unadapted to this inventory size.
The i4 inventory is 9 slots wide by default, such as Minecraft.
Please report bugs on the [bug tracker](https:///hak.xwx.moe/jadedctrl/minetest-i4/issues) — I dont bite!
### Recommendations
To use this mod in the best conditions:
- Use LuaJIT
- Use the default Freetype font style
#### Troubleshooting
If the inventory's font size is too big on certain setups (namely Windows 10/11 or 144 DPI display), you should lower the
### Troubleshooting
If the inventorys font size is too big on certain setups (namely Windows 10/11 or 144 DPI display), you should lower the
value of the setting `display_density_factor` in your `minetest.conf`. Note that the change is applied after restart.
You can also use the font size slider in the inventory, settings window.
You can also use the font size slider in the inventory, settings window.
#### Notes
`i4` uses a larger inventory than the usual inventories in Minetest games.
Thus, most chests will be unadapted to this inventory size.
The `i4` inventory is 9 slots wide by default, such as Minecraft.
## Source code
https://hak.xwx.moe/jadedctrl/minetest-i4
Report bugs on the [**Bug Tracker**](https:///notabug.org/jadedctrl/i4).
![Preview](res/screenshot.png)
#### License
Sounds are under the CC0, by Lone_Wolf & MadPanCake.
Textures are under the CC BY-SA 3.0, by paramat & BlockMen.
Source code from 2024 onward is under the GNU GPLv3, contributions by Jaidyn Ann (jadedctrl).
Source code pre-2024 is under the MIT license, by Jean-Patrick Guerrero; contributions by SmallJoker & anonymous.
Sounds are under the [CC0](LICENSE.md#sounds), by Lone_Wolf & MadPanCake.
Textures are under the [CC BY-SA 3.0](LICENSE.md#textures), by paramat & BlockMen.
Source code for i4 is under the [GNU GPLv3](LICENSE.md#gplv3), with contributions by Jaidyn Ann `<jadedctrl@posteo.at>`.
Code from i3 is under the [MIT license](LICENSE.md#mit), and is by Jean-Patrick Guerrero (with contributions by SmallJoker & anonymous).
See [LICENSE.md](LICENSE.md) for details.

5
i3/README.md Normal file
View File

@ -0,0 +1,5 @@
# i3→i4 Conversion Mod
This mod is very bare-bones, and it only exists to bridge the gap between i3 and i4.
Player data from i3 is transferred to i4; and mods that support i3 also work with i4, so long as this mod is present.

21
i3/init.lua Normal file
View File

@ -0,0 +1,21 @@
-- This is a placeholder mod, to mimic i3s presence for mods that test for it.
-- It also migrates data from i3 to i4.
local storage = core.get_mod_storage("i3")
local data = core.deserialize(storage:get_string"data") or {}
if data and not i4.imported then
-- i3 stores all user-data in a mod-data table; we copy it verbatim to i4.
i4.data = data
-- By default, i4s inventory-size is 32; i3s, however, is 36. i4 will
-- default to 36 at init-time if data was imported from i3. But since were
-- only importing now (and i4 has already been initialized), we need to do
-- it ourselves this time.
if not i4.settings.inventory_size then
i4.settings.inventory_size = 36
end
-- Mark data as imported, so we dont go through this song-and-dance again.
i4.imported = true
end

3
i3/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = i3
description = Conversion mod for i3 to i4
depends = i4

5
i4/README.md Normal file
View File

@ -0,0 +1,5 @@
# i4
This is the primary mod for i4; please see the modpacks [README.md](../README.md).
It should be in the directory immediately above this one.
Alternatively, visit the [Git repository](https://notabug.org/jadedctrl/minetest_i4).

View File

@ -27,6 +27,7 @@ i4 = {
damage_enabled = core.settings:get_bool"enable_damage",
progressive_mode = core.settings:get_bool"i4_progressive_mode" or core.settings:get_bool"i3_progressive_mode",
inventory_size = tonumber(core.settings:get"i4_inventory_size") or (storage:get_int"imported_from_i3" and 36),
},
categories = {
@ -52,7 +53,7 @@ i4 = {
wielditem_hud = true,
ignore_hotbar = true,
reverse_sorting = true,
legacy_inventory = true,
hotbar_len = true,
},
default_data = {
@ -60,6 +61,7 @@ i4 = {
font_size = 0,
collapse = true,
inv_compress = true,
hotbar_len = 8,
},
files = {

View File

@ -1,4 +1,4 @@
name = i4
description = Next-generation inventory
description = Cohesive and featureful inventory mod
optional_depends = 3d_armor, skinsdb, awards
min_minetest_version = 5.6

View File

@ -338,6 +338,9 @@ i4.new_footer_button("home", {
description = S"Go home",
image = "i3_home.png",
fields = home_footer_fields,
access = function(player, data)
return minetest.check_player_privs(player:get_player_name(), {home = true})
end
})
i4.register_craft_type("digging", {

View File

@ -228,7 +228,7 @@ local function init_data(player, info)
data.lang_code = get_lang_code(info)
data.fs_version = info.formspec_version
update_inv_size(player, data)
update_inv_size(player, data, i4.settings.inventory_size)
core.after(0, set_fs, player)
end
@ -237,17 +237,19 @@ local function save_data(player_name)
local _data = copy(i4.data)
for name, v in pairs(_data) do
for dat in pairs(v) do
if not i4.saves[dat] then
_data[name][dat] = nil
for dat in pairs(v) do
if not i4.saves[dat] then
_data[name][dat] = nil
if player_name and i4.data[player_name] then
i4.data[player_name][dat] = nil -- To free up some memory
if player_name and i4.data[player_name] then
i4.data[player_name][dat] = nil -- To free up some memory
end
end
end
end
end
-- This seems like as good a point as any to save whether or not we
-- imported data from i3.
storage:set_string("data", slz(_data))
if i4.imported then
storage:set_int("imported_from_i3", 1)
@ -262,6 +264,7 @@ insert(core.registered_on_joinplayers, 1, function(player)
return outdated(name)
end
init_data(player, info)
init_bags(player)
init_hud(player)

View File

@ -674,17 +674,27 @@ local function get_detached_inv(name, player_name)
}
end
local function update_inv_size(player, data)
data.hotbar_len = data.legacy_inventory and 8 or 9
data.inv_size = 4 * data.hotbar_len
-- Change a players inventory-size to new_size.
local function update_inv_size(player, data, new_size)
data.hotbar_len = new_size / 4
local inv = player:get_inventory()
inv:set_size("main", data.inv_size)
local inv_size = inv:get_size("main")
-- Drop items that cant fit in new inventory size.
if inv_size > new_size then
sort_inventory(player, data)
for i = new_size + 1, inv_size, 1 do
minetest.item_drop(inv:get_stack("main", i), player, player:get_pos())
end
end
inv:set_size("main", new_size)
player:hud_set_hotbar_itemcount(data.hotbar_len)
core.after(0, function()
player:hud_set_hotbar_image(data.legacy_inventory and "gui_hotbar.png" or "i3_hotbar.png")
local hotbar_img = data.hotbar_len == 8 and "gui_hotbar.png" or data.hotbar_len == 9 and "i3_hotbar.png"
player:hud_set_hotbar_image(hotbar_img)
end)
end

View File

@ -40,9 +40,7 @@ local function inv_fields(player, data, fields)
data[str] = true
end
if str == "legacy_inventory" then
update_inv_size(player, data)
elseif str == "collapse" then
if str == "collapse" then
search(data)
end

View File

@ -615,7 +615,9 @@ local function settings_footer_fs(player, data, fs)
-- i4 stores home coordinates with one decimal of precision, as the blow fmt() statement
-- assumes. So we need to trim sethomes coordinates to one decimal, likewise.
local home_pos = sethome.get(player:get_player_name())
home = string.format("(%.1f,%.1f,%.1f)", home_pos.x, home_pos.y, home_pos.z)
if home_pos then
home = string.format("(%.1f,%.1f,%.1f)", home_pos.x, home_pos.y, home_pos.z)
end
end
if home then
@ -634,7 +636,6 @@ local function settings_footer_fs(player, data, fs)
elseif show_style then
checkbox(2.6, 9.95, "cb_hide_tabs", "Hide tabs", tostring(data.hide_tabs))
checkbox(2.6, 10.4, "cb_legacy_inventory", "Legacy inventory", tostring(data.legacy_inventory))
checkbox(2.6, 10.85, "cb_wielditem_hud", "HUD description", tostring(data.wielditem_hud))
if not recipe_filter_set() then
@ -650,8 +651,6 @@ local function settings_footer_fs(player, data, fs)
fs("tooltip[cb_hide_tabs;%s;#32333899;#fff]",
ES"Enable this option to change the style of the right panel")
fs("tooltip[cb_legacy_inventory;%s;#32333899;#fff]",
ES"Enable this option to set the classic inventory size in Minetest")
fs("tooltip[cb_wielditem_hud;%s;#32333899;#fff]",
ES"Enable this option to show the wielded item description in your HUD")
fs("tooltip[cb_collapse;%s;#32333899;#fff]",
@ -694,13 +693,17 @@ end
-- Get the inventory-footers formspec.
local function get_footer(fs, data, player)
-- Render individual footer buttons.
local i = 1
local starting_x = 3.43 - (.3 * (#i4.footer_buttons - 4)) -- Center the icons
for i, btn in ipairs(i4.footer_buttons) do
local btn_name = "footer_" .. btn.name
fs("style[%s;fgimg=%s;fgimg_hovered=%s^\\[brighten^\\[colorize:#fff:100;content_offset=0]",
btn_name, btn.image, btn.image)
image_button(i + starting_x - (i * 0.4), 11.43, 0.35, 0.35, "", btn_name, "")
fs("tooltip[%s;%s;#32333899;#fff]", btn_name, btn.description)
for _, btn in ipairs(i4.footer_buttons) do
if not btn.access or btn.access(player, data) then
local btn_name = "footer_" .. btn.name
fs("style[%s;fgimg=%s;fgimg_hovered=%s^\\[brighten^\\[colorize:#fff:100;content_offset=0]",
btn_name, btn.image, btn.image)
image_button(i + starting_x - (i * 0.4), 11.43, 0.35, 0.35, "", btn_name, "")
fs("tooltip[%s;%s;#32333899;#fff]", btn_name, btn.description)
i++
end
end
-- Render the current-selected buttons formspec, if one is active.
@ -714,11 +717,11 @@ local function get_footer(fs, data, player)
end
local function get_slots(fs, data, player)
local legacy_inventory = data.legacy_inventory
local inv_size = player:get_inventory():get_size("main")
local hotbar_len = data.hotbar_len
local inv_x = legacy_inventory and 0.23 or 0.22
local inv_y = legacy_inventory and 6.7 or 6.9
local spacing = legacy_inventory and 0.25 or 0.1
local inv_x = (inv_size == 32 and 0.23) or (inv_size == 36 and 0.22)
local inv_y = (inv_size == 32 and 6.7) or (inv_size == 36 and 6.9)
local spacing = (inv_size == 32 and 0.25) or (inv_size == 36 and 0.1)
local size = 1
fs"style_type[box;colors=#77777710,#77777710,#777,#777]"
@ -730,10 +733,12 @@ local function get_slots(fs, data, player)
fs("style_type[list;size=%f;spacing=%f]", size, spacing)
fs("list[current_player;main;%f,%f;%u,1;]", inv_x, inv_y, hotbar_len)
fs("style_type[list;size=%f;spacing=%f,%f]", size, spacing, legacy_inventory and 0.15 or spacing)
fs("style_type[list;size=%f;spacing=%f,%f]", size, spacing,
(inv_size == 32 and 0.15) or (inv_size == 36 and spacing))
fs("list[current_player;main;%f,%f;%u,%u;%u]", inv_x, inv_y + (legacy_inventory and 1.25 or 1.15),
hotbar_len, data.inv_size / hotbar_len, hotbar_len)
fs("list[current_player;main;%f,%f;%u,%u;%u]", inv_x, inv_y
+ ((inv_size == 32 and 1.25) or (inv_size == 36 and 1.15)),
hotbar_len, inv_size / hotbar_len, hotbar_len)
fs"listring[current_player;craft]listring[current_player;main]"
@ -742,8 +747,9 @@ end
local function get_inventory_fs(player, data, fs)
local props = player:get_properties()
local inv_size = player:get_inventory():get_size("main")
local ctn_len = 5.7
local ctn_hgt = data.legacy_inventory and 6.1 or 6.3
local ctn_hgt = (inv_size == 32 and 6.1) or (inv_size == 36 and 6.3)
local yoffset = 0
if props.mesh ~= "" then

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 186 B

View File

Before

Width:  |  Height:  |  Size: 191 B

After

Width:  |  Height:  |  Size: 191 B

View File

Before

Width:  |  Height:  |  Size: 175 B

After

Width:  |  Height:  |  Size: 175 B

View File

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 167 B

View File

Before

Width:  |  Height:  |  Size: 141 B

After

Width:  |  Height:  |  Size: 141 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 382 B

After

Width:  |  Height:  |  Size: 382 B

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 378 B

View File

Before

Width:  |  Height:  |  Size: 372 B

After

Width:  |  Height:  |  Size: 372 B

View File

Before

Width:  |  Height:  |  Size: 459 B

After

Width:  |  Height:  |  Size: 459 B

View File

Before

Width:  |  Height:  |  Size: 209 B

After

Width:  |  Height:  |  Size: 209 B

View File

Before

Width:  |  Height:  |  Size: 70 B

After

Width:  |  Height:  |  Size: 70 B

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 67 B

After

Width:  |  Height:  |  Size: 67 B

View File

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 146 B

View File

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 146 B

View File

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 146 B

View File

Before

Width:  |  Height:  |  Size: 927 B

After

Width:  |  Height:  |  Size: 927 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 404 B

After

Width:  |  Height:  |  Size: 404 B

View File

Before

Width:  |  Height:  |  Size: 749 B

After

Width:  |  Height:  |  Size: 749 B

View File

Before

Width:  |  Height:  |  Size: 528 B

After

Width:  |  Height:  |  Size: 528 B

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 227 B

After

Width:  |  Height:  |  Size: 227 B

View File

Before

Width:  |  Height:  |  Size: 867 B

After

Width:  |  Height:  |  Size: 867 B

View File

Before

Width:  |  Height:  |  Size: 198 B

After

Width:  |  Height:  |  Size: 198 B

View File

Before

Width:  |  Height:  |  Size: 150 B

After

Width:  |  Height:  |  Size: 150 B

View File

Before

Width:  |  Height:  |  Size: 70 B

After

Width:  |  Height:  |  Size: 70 B

Some files were not shown because too many files have changed in this diff Show More