forked from Green-Sky/tomato
split icons to their own files
This commit is contained in:
parent
6d3ef742b5
commit
5544adf345
@ -67,6 +67,12 @@ target_sources(tomato PUBLIC
|
|||||||
|
|
||||||
./chat_gui/theme.hpp
|
./chat_gui/theme.hpp
|
||||||
./chat_gui/theme.cpp
|
./chat_gui/theme.cpp
|
||||||
|
./chat_gui/icons/direct.hpp
|
||||||
|
./chat_gui/icons/direct.cpp
|
||||||
|
./chat_gui/icons/cloud.hpp
|
||||||
|
./chat_gui/icons/cloud.cpp
|
||||||
|
./chat_gui/icons/mail.hpp
|
||||||
|
./chat_gui/icons/mail.cpp
|
||||||
./chat_gui/contact_list.hpp
|
./chat_gui/contact_list.hpp
|
||||||
./chat_gui/contact_list.cpp
|
./chat_gui/contact_list.cpp
|
||||||
./chat_gui/file_selector.hpp
|
./chat_gui/file_selector.hpp
|
||||||
|
@ -5,135 +5,9 @@
|
|||||||
#include <imgui/imgui.h>
|
#include <imgui/imgui.h>
|
||||||
//#include <imgui/imgui_internal.h>
|
//#include <imgui/imgui_internal.h>
|
||||||
|
|
||||||
#include <array>
|
#include "./icons/direct.hpp"
|
||||||
|
#include "./icons/cloud.hpp"
|
||||||
static void drawIconDirectLines(
|
#include "./icons/mail.hpp"
|
||||||
const ImVec2 p0,
|
|
||||||
const ImVec2 p1_o,
|
|
||||||
const ImU32 col,
|
|
||||||
const float thickness
|
|
||||||
) {
|
|
||||||
#define PLINE(x0, y0, x1, y1) \
|
|
||||||
ImGui::GetWindowDrawList()->AddLine( \
|
|
||||||
{p0.x + p1_o.x*(x0), p0.y + p1_o.y*(y0)}, \
|
|
||||||
{p0.x + p1_o.x*(x1), p0.y + p1_o.y*(y1)}, \
|
|
||||||
col, \
|
|
||||||
thickness \
|
|
||||||
);
|
|
||||||
|
|
||||||
// arrow 1
|
|
||||||
// (3,1) -> (9,7)
|
|
||||||
PLINE(0.3f, 0.1f, 0.9f, 0.7f)
|
|
||||||
// (9,7) -> (9,5)
|
|
||||||
PLINE(0.9f, 0.7f, 0.9f, 0.5f)
|
|
||||||
// (9,7) -> (7,7)
|
|
||||||
PLINE(0.9f, 0.7f, 0.7f, 0.7f)
|
|
||||||
|
|
||||||
// arrow 2
|
|
||||||
// (7,9) -> (1,3)
|
|
||||||
PLINE(0.7f, 0.9f, 0.1f, 0.3f)
|
|
||||||
// (1,3) -> (3,3)
|
|
||||||
PLINE(0.1f, 0.3f, 0.3f, 0.3f)
|
|
||||||
// (1,3) -> (1,5)
|
|
||||||
PLINE(0.1f, 0.3f, 0.1f, 0.5f)
|
|
||||||
#undef PLINE
|
|
||||||
}
|
|
||||||
|
|
||||||
static void drawIconDirect(
|
|
||||||
const ImVec2 p0,
|
|
||||||
const ImVec2 p1_o,
|
|
||||||
const ImU32 col_main,
|
|
||||||
const ImU32 col_back
|
|
||||||
) {
|
|
||||||
// dark background
|
|
||||||
// the circle looks bad in light mode
|
|
||||||
//ImGui::GetWindowDrawList()->AddCircleFilled({p0.x + p1_o.x*0.5f, p0.y + p1_o.y*0.5f}, p1_o.x*0.5f, col_back);
|
|
||||||
drawIconDirectLines(p0, p1_o, col_back, 4.0f);
|
|
||||||
drawIconDirectLines(p0, p1_o, col_main, 1.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void drawIconCloud(
|
|
||||||
const ImVec2 p0,
|
|
||||||
const ImVec2 p1_o,
|
|
||||||
const ImU32 col_main,
|
|
||||||
const ImU32 col_back
|
|
||||||
) {
|
|
||||||
std::array<ImVec2, 19> points {{
|
|
||||||
{0.2f, 0.9f},
|
|
||||||
{0.8f, 0.9f},
|
|
||||||
{0.9f, 0.8f},
|
|
||||||
{0.9f, 0.7f},
|
|
||||||
{0.7f, 0.7f},
|
|
||||||
{0.9f, 0.5f},
|
|
||||||
{0.9f, 0.4f},
|
|
||||||
{0.8f, 0.2f},
|
|
||||||
{0.6f, 0.2f},
|
|
||||||
{0.5f, 0.3f},
|
|
||||||
{0.5f, 0.5f},
|
|
||||||
{0.4f, 0.4f},
|
|
||||||
{0.3f, 0.4f},
|
|
||||||
{0.2f, 0.5f},
|
|
||||||
{0.2f, 0.6f},
|
|
||||||
{0.3f, 0.7f},
|
|
||||||
{0.1f, 0.7f},
|
|
||||||
{0.1f, 0.8f},
|
|
||||||
{0.2f, 0.9f},
|
|
||||||
}};
|
|
||||||
for (auto& v : points) {
|
|
||||||
v.y -= 0.1f;
|
|
||||||
v = {p0.x + p1_o.x*v.x, p0.y + p1_o.y*v.y};
|
|
||||||
}
|
|
||||||
// the circle looks bad in light mode
|
|
||||||
//ImGui::GetWindowDrawList()->AddCircleFilled({p0.x + p1_o.x*0.5f, p0.y + p1_o.y*0.5f}, p1_o.x*0.5f, col_back);
|
|
||||||
ImGui::GetWindowDrawList()->AddPolyline(points.data(), points.size(), col_back, ImDrawFlags_None, 4.f);
|
|
||||||
ImGui::GetWindowDrawList()->AddPolyline(points.data(), points.size(), col_main, ImDrawFlags_None, 1.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void drawIconMailLines(
|
|
||||||
const ImVec2 p0,
|
|
||||||
const ImVec2 p1_o,
|
|
||||||
const ImU32 col,
|
|
||||||
const float thickness
|
|
||||||
) {
|
|
||||||
#define PLINE(x0, y0, x1, y1) \
|
|
||||||
ImGui::GetWindowDrawList()->AddLine( \
|
|
||||||
{p0.x + p1_o.x*(x0), p0.y + p1_o.y*(y0)}, \
|
|
||||||
{p0.x + p1_o.x*(x1), p0.y + p1_o.y*(y1)}, \
|
|
||||||
col, \
|
|
||||||
thickness \
|
|
||||||
);
|
|
||||||
|
|
||||||
// quad
|
|
||||||
// (1,2) -> (1,8)
|
|
||||||
PLINE(0.1f, 0.2f, 0.1f, 0.8f)
|
|
||||||
// (1,8) -> (9,8)
|
|
||||||
PLINE(0.1f, 0.8f, 0.9f, 0.8f)
|
|
||||||
// (9,8) -> (9,2)
|
|
||||||
PLINE(0.9f, 0.8f, 0.9f, 0.2f)
|
|
||||||
// (9,2) -> (1,2)
|
|
||||||
PLINE(0.9f, 0.2f, 0.1f, 0.2f)
|
|
||||||
|
|
||||||
// lip
|
|
||||||
// (1,2) -> (5,5)
|
|
||||||
PLINE(0.1f, 0.2f, 0.5f, 0.5f)
|
|
||||||
// (5,5) -> (9,2)
|
|
||||||
PLINE(0.5f, 0.5f, 0.9f, 0.2f)
|
|
||||||
|
|
||||||
#undef PLINE
|
|
||||||
}
|
|
||||||
|
|
||||||
static void drawIconMail(
|
|
||||||
const ImVec2 p0,
|
|
||||||
const ImVec2 p1_o,
|
|
||||||
const ImU32 col_main,
|
|
||||||
const ImU32 col_back
|
|
||||||
) {
|
|
||||||
// dark background
|
|
||||||
// the circle looks bad in light mode
|
|
||||||
//ImGui::GetWindowDrawList()->AddCircleFilled({p0.x + p1_o.x*0.5f, p0.y + p1_o.y*0.5f}, p1_o.x*0.5f, col_back);
|
|
||||||
drawIconMailLines(p0, p1_o, col_back, 4.0f);
|
|
||||||
drawIconMailLines(p0, p1_o, col_main, 1.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
void renderAvatar(
|
void renderAvatar(
|
||||||
const Theme& th,
|
const Theme& th,
|
||||||
|
41
src/chat_gui/icons/cloud.cpp
Normal file
41
src/chat_gui/icons/cloud.cpp
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#include "./cloud.hpp"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
void drawIconCloud(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col_main,
|
||||||
|
const ImU32 col_back
|
||||||
|
) {
|
||||||
|
std::array<ImVec2, 19> points {{
|
||||||
|
{0.2f, 0.9f},
|
||||||
|
{0.8f, 0.9f},
|
||||||
|
{0.9f, 0.8f},
|
||||||
|
{0.9f, 0.7f},
|
||||||
|
{0.7f, 0.7f},
|
||||||
|
{0.9f, 0.5f},
|
||||||
|
{0.9f, 0.4f},
|
||||||
|
{0.8f, 0.2f},
|
||||||
|
{0.6f, 0.2f},
|
||||||
|
{0.5f, 0.3f},
|
||||||
|
{0.5f, 0.5f},
|
||||||
|
{0.4f, 0.4f},
|
||||||
|
{0.3f, 0.4f},
|
||||||
|
{0.2f, 0.5f},
|
||||||
|
{0.2f, 0.6f},
|
||||||
|
{0.3f, 0.7f},
|
||||||
|
{0.1f, 0.7f},
|
||||||
|
{0.1f, 0.8f},
|
||||||
|
{0.2f, 0.9f},
|
||||||
|
}};
|
||||||
|
for (auto& v : points) {
|
||||||
|
v.y -= 0.1f;
|
||||||
|
v = {p0.x + p1_o.x*v.x, p0.y + p1_o.y*v.y};
|
||||||
|
}
|
||||||
|
// the circle looks bad in light mode
|
||||||
|
//ImGui::GetWindowDrawList()->AddCircleFilled({p0.x + p1_o.x*0.5f, p0.y + p1_o.y*0.5f}, p1_o.x*0.5f, col_back);
|
||||||
|
ImGui::GetWindowDrawList()->AddPolyline(points.data(), points.size(), col_back, ImDrawFlags_None, 4.f);
|
||||||
|
ImGui::GetWindowDrawList()->AddPolyline(points.data(), points.size(), col_main, ImDrawFlags_None, 1.5f);
|
||||||
|
}
|
||||||
|
|
11
src/chat_gui/icons/cloud.hpp
Normal file
11
src/chat_gui/icons/cloud.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <imgui/imgui.h>
|
||||||
|
|
||||||
|
void drawIconCloud(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col_main,
|
||||||
|
const ImU32 col_back
|
||||||
|
);
|
||||||
|
|
49
src/chat_gui/icons/direct.cpp
Normal file
49
src/chat_gui/icons/direct.cpp
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "./direct.hpp"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
static void drawIconDirectLines(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col,
|
||||||
|
const float thickness
|
||||||
|
) {
|
||||||
|
#define PLINE(x0, y0, x1, y1) \
|
||||||
|
ImGui::GetWindowDrawList()->AddLine( \
|
||||||
|
{p0.x + p1_o.x*(x0), p0.y + p1_o.y*(y0)}, \
|
||||||
|
{p0.x + p1_o.x*(x1), p0.y + p1_o.y*(y1)}, \
|
||||||
|
col, \
|
||||||
|
thickness \
|
||||||
|
);
|
||||||
|
|
||||||
|
// arrow 1
|
||||||
|
// (3,1) -> (9,7)
|
||||||
|
PLINE(0.3f, 0.1f, 0.9f, 0.7f)
|
||||||
|
// (9,7) -> (9,5)
|
||||||
|
PLINE(0.9f, 0.7f, 0.9f, 0.5f)
|
||||||
|
// (9,7) -> (7,7)
|
||||||
|
PLINE(0.9f, 0.7f, 0.7f, 0.7f)
|
||||||
|
|
||||||
|
// arrow 2
|
||||||
|
// (7,9) -> (1,3)
|
||||||
|
PLINE(0.7f, 0.9f, 0.1f, 0.3f)
|
||||||
|
// (1,3) -> (3,3)
|
||||||
|
PLINE(0.1f, 0.3f, 0.3f, 0.3f)
|
||||||
|
// (1,3) -> (1,5)
|
||||||
|
PLINE(0.1f, 0.3f, 0.1f, 0.5f)
|
||||||
|
#undef PLINE
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawIconDirect(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col_main,
|
||||||
|
const ImU32 col_back
|
||||||
|
) {
|
||||||
|
// dark background
|
||||||
|
// the circle looks bad in light mode
|
||||||
|
//ImGui::GetWindowDrawList()->AddCircleFilled({p0.x + p1_o.x*0.5f, p0.y + p1_o.y*0.5f}, p1_o.x*0.5f, col_back);
|
||||||
|
drawIconDirectLines(p0, p1_o, col_back, 4.0f);
|
||||||
|
drawIconDirectLines(p0, p1_o, col_main, 1.5f);
|
||||||
|
}
|
||||||
|
|
10
src/chat_gui/icons/direct.hpp
Normal file
10
src/chat_gui/icons/direct.hpp
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <imgui/imgui.h>
|
||||||
|
|
||||||
|
void drawIconDirect(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col_main,
|
||||||
|
const ImU32 col_back
|
||||||
|
);
|
50
src/chat_gui/icons/mail.cpp
Normal file
50
src/chat_gui/icons/mail.cpp
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#include "./mail.hpp"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
|
static void drawIconMailLines(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col,
|
||||||
|
const float thickness
|
||||||
|
) {
|
||||||
|
#define PLINE(x0, y0, x1, y1) \
|
||||||
|
ImGui::GetWindowDrawList()->AddLine( \
|
||||||
|
{p0.x + p1_o.x*(x0), p0.y + p1_o.y*(y0)}, \
|
||||||
|
{p0.x + p1_o.x*(x1), p0.y + p1_o.y*(y1)}, \
|
||||||
|
col, \
|
||||||
|
thickness \
|
||||||
|
);
|
||||||
|
|
||||||
|
// quad
|
||||||
|
// (1,2) -> (1,8)
|
||||||
|
PLINE(0.1f, 0.2f, 0.1f, 0.8f)
|
||||||
|
// (1,8) -> (9,8)
|
||||||
|
PLINE(0.1f, 0.8f, 0.9f, 0.8f)
|
||||||
|
// (9,8) -> (9,2)
|
||||||
|
PLINE(0.9f, 0.8f, 0.9f, 0.2f)
|
||||||
|
// (9,2) -> (1,2)
|
||||||
|
PLINE(0.9f, 0.2f, 0.1f, 0.2f)
|
||||||
|
|
||||||
|
// lip
|
||||||
|
// (1,2) -> (5,5)
|
||||||
|
PLINE(0.1f, 0.2f, 0.5f, 0.5f)
|
||||||
|
// (5,5) -> (9,2)
|
||||||
|
PLINE(0.5f, 0.5f, 0.9f, 0.2f)
|
||||||
|
|
||||||
|
#undef PLINE
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawIconMail(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col_main,
|
||||||
|
const ImU32 col_back
|
||||||
|
) {
|
||||||
|
// dark background
|
||||||
|
// the circle looks bad in light mode
|
||||||
|
//ImGui::GetWindowDrawList()->AddCircleFilled({p0.x + p1_o.x*0.5f, p0.y + p1_o.y*0.5f}, p1_o.x*0.5f, col_back);
|
||||||
|
drawIconMailLines(p0, p1_o, col_back, 4.0f);
|
||||||
|
drawIconMailLines(p0, p1_o, col_main, 1.5f);
|
||||||
|
}
|
||||||
|
|
11
src/chat_gui/icons/mail.hpp
Normal file
11
src/chat_gui/icons/mail.hpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <imgui/imgui.h>
|
||||||
|
|
||||||
|
void drawIconMail(
|
||||||
|
const ImVec2 p0,
|
||||||
|
const ImVec2 p1_o,
|
||||||
|
const ImU32 col_main,
|
||||||
|
const ImU32 col_back
|
||||||
|
);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user