New logo and option to change icon

This commit is contained in:
Eric Kotato 2020-03-18 03:37:33 +03:00
parent b119ce78fd
commit 13928807b5
93 changed files with 119 additions and 28 deletions

View file

@ -1222,13 +1222,13 @@ if (LINUX AND DESKTOP_APP_USE_PACKAGED)
include(GNUInstallDirs)
configure_file("../lib/xdg/kotatogramdesktop.appdata.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/kotatogramdesktop.appdata.xml" @ONLY)
install(TARGETS Telegram RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}")
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "telegram.png")
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "kotatogram.png")
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "kotatogram.png")
install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "kotatogram.png")
install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "kotatogram.png")
install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "kotatogram.png")
install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "kotatogram.png")
install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "kotatogram.png")
install(FILES "../lib/xdg/kotatogramdesktop.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" RENAME "${TDESKTOP_LAUNCHER_BASENAME}.desktop")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/kotatogramdesktop.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" RENAME "${TDESKTOP_LAUNCHER_BASENAME}.appdata.xml")
endif()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 884 B

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -45,7 +45,17 @@
<file alias="art/bg.jpg">../../art/bg.jpg</file>
<file alias="art/bg_initial.jpg">../../art/bg_initial.jpg</file>
<file alias="art/logo_256.png">../../art/logo_256.png</file>
<file alias="art/logo_256_blue.png">../../art/logo_256_blue.png</file>
<file alias="art/logo_256_green.png">../../art/logo_256_green.png</file>
<file alias="art/logo_256_orange.png">../../art/logo_256_orange.png</file>
<file alias="art/logo_256_red.png">../../art/logo_256_red.png</file>
<file alias="art/logo_256_old.png">../../art/logo_256_old.png</file>
<file alias="art/logo_256_no_margin.png">../../art/logo_256_no_margin.png</file>
<file alias="art/logo_256_no_margin_blue.png">../../art/logo_256_no_margin_blue.png</file>
<file alias="art/logo_256_no_margin_green.png">../../art/logo_256_no_margin_green.png</file>
<file alias="art/logo_256_no_margin_orange.png">../../art/logo_256_no_margin_orange.png</file>
<file alias="art/logo_256_no_margin_red.png">../../art/logo_256_no_margin_red.png</file>
<file alias="art/logo_256_no_margin_old.png">../../art/logo_256_no_margin_old.png</file>
<file alias="art/sunrise.jpg">../../art/sunrise.jpg</file>
<file alias="day-blue.tdesktop-theme">../../day-blue.tdesktop-theme</file>
<file alias="night.tdesktop-theme">../../night.tdesktop-theme</file>

View file

@ -26,6 +26,11 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1 ICON "..\\art\\icon256.ico"
IDI_ICON2 ICON "..\\art\\icon256blue.ico"
IDI_ICON3 ICON "..\\art\\icon256green.ico"
IDI_ICON4 ICON "..\\art\\icon256orange.ico"
IDI_ICON5 ICON "..\\art\\icon256red.ico"
IDI_ICON6 ICON "..\\art\\icon256old.ico"
/////////////////////////////////////////////////////////////////////////////
//

View file

@ -98,9 +98,29 @@ Application::Application(not_null<Launcher*> launcher)
, _emojiKeywords(std::make_unique<ChatHelpers::EmojiKeywords>())
, _audio(std::make_unique<Media::Audio::Instance>())
, _logo(Window::LoadLogo())
, _logoNoMargin(Window::LoadLogoNoMargin()) {
, _logoBlue(Window::LoadLogo(1))
, _logoGreen(Window::LoadLogo(2))
, _logoOrange(Window::LoadLogo(3))
, _logoRed(Window::LoadLogo(4))
, _logoOld(Window::LoadLogo(5))
, _logoNoMargin(Window::LoadLogoNoMargin())
, _logoNoMarginBlue(Window::LoadLogoNoMargin(1))
, _logoNoMarginGreen(Window::LoadLogoNoMargin(2))
, _logoNoMarginOrange(Window::LoadLogoNoMargin(3))
, _logoNoMarginRed(Window::LoadLogoNoMargin(4))
, _logoNoMarginOld(Window::LoadLogoNoMargin(5)) {
Expects(!_logo.isNull());
Expects(!_logoBlue.isNull());
Expects(!_logoGreen.isNull());
Expects(!_logoOrange.isNull());
Expects(!_logoRed.isNull());
Expects(!_logoOld.isNull());
Expects(!_logoNoMargin.isNull());
Expects(!_logoNoMarginBlue.isNull());
Expects(!_logoNoMarginGreen.isNull());
Expects(!_logoNoMarginOrange.isNull());
Expects(!_logoNoMarginRed.isNull());
Expects(!_logoNoMarginOld.isNull());
Ui::Integration::Set(&_private->uiIntegration);

View file

@ -115,10 +115,26 @@ public:
PeerData *ui_getPeerForMouseAction();
QPoint getPointForCallPanelCenter() const;
QImage logo() const {
QImage logo(int variant = 0) const {
switch (variant) {
case 1: return _logoBlue;
case 2: return _logoGreen;
case 3: return _logoOrange;
case 4: return _logoRed;
case 5: return _logoOld;
}
return _logo;
}
QImage logoNoMargin() const {
QImage logoNoMargin(int variant = 0) const {
switch (variant) {
case 1: return _logoNoMarginBlue;
case 2: return _logoNoMarginGreen;
case 3: return _logoNoMarginOrange;
case 4: return _logoNoMarginRed;
case 5: return _logoNoMarginOld;
}
return _logoNoMargin;
}
@ -281,7 +297,17 @@ private:
const std::unique_ptr<Media::Audio::Instance> _audio;
const QImage _logo;
const QImage _logoBlue;
const QImage _logoGreen;
const QImage _logoOrange;
const QImage _logoRed;
const QImage _logoOld;
const QImage _logoNoMargin;
const QImage _logoNoMarginBlue;
const QImage _logoNoMarginGreen;
const QImage _logoNoMarginOrange;
const QImage _logoNoMarginRed;
const QImage _logoNoMarginOld;
rpl::variable<bool> _passcodeLock;
rpl::event_stream<bool> _termsLockChanges;

View file

@ -327,6 +327,12 @@ bool Manager::readCustomFile() {
ReadBoolOption(settings, "always_show_top_userpic", [&](auto v) {
cSetShowTopBarUserpic(v);
});
ReadIntOption(settings, "custom_app_icon", [&](auto v) {
if (v >= 0 || v <= 5) {
cSetCustomAppIcon(v);
}
});
return true;
}
@ -370,6 +376,7 @@ void Manager::writeDefaultFile() {
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
settings.insert(qsl("custom_app_icon"), cCustomAppIcon());
auto settingsScales = QJsonArray();
settings.insert(qsl("scales"), settingsScales);
@ -434,6 +441,7 @@ void Manager::writeCurrentSettings() {
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
settings.insert(qsl("userpic_corner_type"), cUserpicCornersType());
settings.insert(qsl("always_show_top_userpic"), cShowTopBarUserpic());
settings.insert(qsl("custom_app_icon"), cCustomAppIcon());
auto settingsScales = QJsonArray();
auto currentScales = cInterfaceScales();

View file

@ -377,7 +377,7 @@ void PeerData::clearUserpic() {
const auto loc = StorageImageLocation();
const auto photo = [&] {
if (isNotificationsUser()) {
auto image = Core::App().logoNoMargin().scaledToWidth(
auto image = Core::App().logoNoMargin(cCustomAppIcon()).scaledToWidth(
kUserpicSize,
Qt::SmoothTransformation);
return _userpic

View file

@ -21,6 +21,10 @@ introCoverIcon: icon {
{ "intro_plane_outer", introCoverPlaneOuter },
{ "intro_plane_top", introCoverPlaneTop },
};
introKotatoCoverIcon: icon {
{ "intro_kotato_trace", introCoverPlaneTrace },
{ "intro_kotato_top", introCoverPlaneTop },
};
introCoverIconLeft: 50px;
introCoverIconTop: 46px;

View file

@ -340,7 +340,7 @@ void Step::paintCover(Painter &p, int top) {
st::introCoverLeft.paint(p, left, coverHeight - st::introCoverLeft.height(), width());
st::introCoverRight.paint(p, width() - right - st::introCoverRight.width(), coverHeight - st::introCoverRight.height(), width());
auto planeLeft = (width() - st::introCoverIcon.width()) / 2 - st::introCoverIconLeft;
auto planeLeft = (width() - st::introKotatoCoverIcon.width()) / 2 - st::introCoverIconLeft;
auto planeTop = top + st::introCoverIconTop;
if (top < 0 && !_hasCover) {
auto deltaLeft = -qRound(float64(st::introPlaneWidth / st::introPlaneHeight) * top);
@ -348,7 +348,7 @@ void Step::paintCover(Painter &p, int top) {
planeLeft += deltaLeft;
// planeTop += top;
}
st::introCoverIcon.paint(p, planeLeft, planeTop, width());
st::introKotatoCoverIcon.paint(p, planeLeft, planeTop, width());
}
int Step::contentLeft() const {

View file

@ -81,7 +81,7 @@ MainWindow::MainWindow(not_null<Window::Controller*> controller)
QImage iconImage(cWorkingDir() + "tdata/icon.png");
auto logo = iconImage.isNull()
? Core::App().logo()
? Core::App().logo(cCustomAppIcon())
: iconImage;
icon16 = logo.scaledToWidth(16, Qt::SmoothTransformation);
@ -89,7 +89,7 @@ MainWindow::MainWindow(not_null<Window::Controller*> controller)
icon64 = logo.scaledToWidth(64, Qt::SmoothTransformation);
auto logoNoMargin = iconImage.isNull()
? Core::App().logoNoMargin()
? Core::App().logoNoMargin(cCustomAppIcon())
: iconImage;
iconbig16 = logoNoMargin.scaledToWidth(16, Qt::SmoothTransformation);

View file

@ -200,7 +200,7 @@ QIcon TrayIconGen(int counter, bool muted) {
} else {
currentImageBack = QImage(cWorkingDir() + "tdata/icon.png");
if (currentImageBack.isNull()) {
currentImageBack = Core::App().logo();
currentImageBack = Core::App().logo(cCustomAppIcon());
}
}

View file

@ -686,7 +686,7 @@ void MainWindow::psSetupTrayIcon() {
trayIcon = new QSystemTrayIcon(this);
auto icon = QIcon(cWorkingDir() + "tdata/icon.png");
if (icon.isNull()) {
icon = QIcon(App::pixmapFromImageInPlace(Core::App().logoNoMargin()));
icon = QIcon(App::pixmapFromImageInPlace(Core::App().logoNoMargin(cCustomAppIcon())));
}
trayIcon->setIcon(icon);

View file

@ -318,3 +318,4 @@ rpl::producer<int> RecentStickersLimitChanges() {
int gUserpicCornersType = 3;
bool gShowTopBarUserpic = false;
int gCustomAppIcon = 0;

View file

@ -248,3 +248,4 @@ void SetRecentStickersLimit(int limit);
DeclareSetting(int, UserpicCornersType);
DeclareSetting(bool, ShowTopBarUserpic);
DeclareSetting(int, CustomAppIcon);

View file

@ -61,6 +61,7 @@ settingsIconStickers: icon {{ "settings_stickers", menuIconFg }};
settingsIconEmoji: icon {{ "settings_emoji", menuIconFg }};
settingsIconThemes: icon {{ "settings_themes", menuIconFg }};
settingsIconKotato: icon {{ "settings_kotato", menuIconFg }};
settingsIconKotatoOld: icon {{ "settings_kotato_old", menuIconFg }};
settingsSetPhotoSkip: 7px;

View file

@ -108,7 +108,9 @@ void SetupSections(
addSection(
tr::ktg_settings_kotato(),
Type::Kotato,
&st::settingsIconKotato);
(cCustomAppIcon() == 5
? &st::settingsIconKotatoOld
: &st::settingsIconKotato));
SetupLanguageButton(container);

View file

@ -251,7 +251,7 @@ void NotificationsCount::prepareNotificationSampleSmall() {
void NotificationsCount::prepareNotificationSampleUserpic() {
if (_notificationSampleUserpic.isNull()) {
_notificationSampleUserpic = App::pixmapFromImageInPlace(
Core::App().logoNoMargin().scaled(
Core::App().logoNoMargin(cCustomAppIcon()).scaled(
st::notifyPhotoSize * cIntRetinaFactor(),
st::notifyPhotoSize * cIntRetinaFactor(),
Qt::IgnoreAspectRatio,

View file

@ -49,12 +49,24 @@ constexpr auto kSaveWindowPositionTimeout = crl::time(1000);
} // namespace
QImage LoadLogo() {
return QImage(qsl(":/gui/art/logo_256.png"));
QString LogoVariant(int variant) {
switch (variant) {
case 1: return QString("_blue");
case 2: return QString("_green");
case 3: return QString("_orange");
case 4: return QString("_red");
case 5: return QString("_old");
}
return QString();
}
QImage LoadLogoNoMargin() {
return QImage(qsl(":/gui/art/logo_256_no_margin.png"));
QImage LoadLogo(int variant) {
return QImage(qsl(":/gui/art/logo_256%1.png").arg(LogoVariant(variant)));
}
QImage LoadLogoNoMargin(int variant) {
return QImage(qsl(":/gui/art/logo_256_no_margin%1.png").arg(LogoVariant(variant)));
}
void ConvertIconToBlack(QImage &image) {
@ -106,7 +118,7 @@ void ConvertIconToBlack(QImage &image) {
}
QIcon CreateOfficialIcon(Main::Account *account) {
auto image = Core::IsAppLaunched() ? Core::App().logo() : LoadLogo();
auto image = Core::IsAppLaunched() ? Core::App().logo(cCustomAppIcon()) : LoadLogo(cCustomAppIcon());
if (account
&& account->sessionExists()
&& account->session().supportMode()) {

View file

@ -29,8 +29,9 @@ class SessionController;
class TitleWidget;
struct TermsLock;
QImage LoadLogo();
QImage LoadLogoNoMargin();
QString LogoVariant(int variant = 0);
QImage LoadLogo(int variant = 0);
QImage LoadLogoNoMargin(int variant = 0);
QIcon CreateIcon(Main::Account *account = nullptr);
void ConvertIconToBlack(QImage &image);

View file

@ -88,7 +88,7 @@ Manager::QueuedNotification::QueuedNotification(
QPixmap Manager::hiddenUserpicPlaceholder() const {
if (_hiddenUserpicPlaceholder.isNull()) {
_hiddenUserpicPlaceholder = App::pixmapFromImageInPlace(Core::App().logoNoMargin().scaled(st::notifyPhotoSize, st::notifyPhotoSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
_hiddenUserpicPlaceholder = App::pixmapFromImageInPlace(Core::App().logoNoMargin(cCustomAppIcon()).scaled(st::notifyPhotoSize, st::notifyPhotoSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
_hiddenUserpicPlaceholder.setDevicePixelRatio(cRetinaFactor());
}
return _hiddenUserpicPlaceholder;

View file

@ -57,7 +57,7 @@ QString CachedUserpics::get(const InMemoryKey &key, PeerData *peer) {
peer->saveUserpic(v.path, st::notifyMacPhotoSize);
}
} else {
Core::App().logoNoMargin().save(v.path, "PNG");
Core::App().logoNoMargin(cCustomAppIcon()).save(v.path, "PNG");
}
i = _images.insert(key, v);
_someSavedFlag = true;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 60 KiB