export ppbr wip

This commit is contained in:
2019-09-13 21:58:37 +02:00
parent bbd9dfc4a9
commit 729c73eef2
5 changed files with 21 additions and 25 deletions

View File

@@ -43,13 +43,13 @@
<border id="background" positioning="absolute" position="0 0" color=".4 .4 .4 .8" width="100%" height="100%" align="center" justify="center" mouse-capture="true">
<border id="form" thickness="1" border-color=".2" pad="3" width="650" dir="col">
<border id="title-bar" width="100%" height="30" color=".2 .2 .2 .9" dir="row" align="center" justify="center">
<text text="Upload Brushes"></text>
<text text="Save Brushes"></text>
</border>
<border width="100%" color="0 0 0 .9" pad="10" dir="row" grow="1">
<border id="files-list" dir="row" wrap="1" flood-events="1" grow="1" height="100%" margin="0 0 0 0" pad="10" color=".2 .2 .2 1">
<node dir="col" margin="0 20 0 0">
<image-texture id="header-tex" width="256" height="128" pad="10">
<text text="Header image.\nSelect a 256x128 pixels image that will be displayed as a preview for this brushes collection." text-wrap-width="230" color=".5"/>
<text id="header-descr" text="Header image.\nSelect a 256x128 pixels image that will be displayed as a preview for this brushes collection." text-wrap-width="230" color=".5"/>
</image-texture>
<node dir="row" width="256" height="30" justify="center" margin="10 0 0 0">
<button id="header-gen" text="Generate" grow="1" height="100%"/>

View File

@@ -601,20 +601,20 @@ void App::dialog_ppbr_export()
{
auto root = layout[main_id];
auto dialog = root->add_child_ref<NodeDialogExportPPBR>();
dialog->btn_ok->on_click = [this,dialog] (Node*) {
dialog->btn_ok->on_click = [this, dialog] (Node*) {
#if __IOS__
App::I->pick_file_save("ppbr", [this](std::string path) {
presets->export_ppbr(path, {});
App::I->pick_file_save("ppbr", [this, dialog] (std::string path) {
presets->export_ppbr(path, dialog->m_header_image);
});
#else
App::I->pick_file_save({ "ppbr" }, [this](std::string path) {
std::thread([this, path] {
App::I->pick_file_save({ "ppbr" }, [this, dialog] (std::string path) {
std::thread([this, path, dialog] {
BT_SetTerminate();
presets->export_ppbr(path, {});
presets->export_ppbr(path, dialog->m_header_image);
dialog->destroy();
App::I->message_box("Export PPBR", "Brushes exported to:\n" + path);
}).detach();
});
}).detach();
});
#endif
dialog->destroy();
};
}

View File

@@ -75,13 +75,14 @@ void FontManager::change_scale(float scale)
std::vector<TextMesh::Token> TextMesh::tokenize(const std::string& s, const Font& f) const noexcept
{
std::vector<std::string> parts;
std::array<char, 7> delims = { ' ', '\n', ',', '.', ':', '?', '!' };
std::array<char, 10> delims = { ' ', '\n', ',', '.', ':', ';', '?', '!', '\\', '/' };
std::string tmp;
bool wrap = false;
for (char c : s)
{
bool is_delim = std::find(delims.begin(), delims.end(), c) != delims.end();
wrap |= is_delim;
wrap |= is_delim; // set wrap to notify a delimiter has been reached
// when a new non-delim char is detected, start a new token
if (wrap && !is_delim)
{
parts.push_back(tmp);
@@ -90,9 +91,10 @@ std::vector<TextMesh::Token> TextMesh::tokenize(const std::string& s, const Font
}
tmp.push_back(c);
}
// insert last partial token
if (!tmp.empty())
parts.push_back(tmp);
// measure each token length
std::vector<TextMesh::Token> ret;
for (auto p : parts)
{
@@ -147,7 +149,7 @@ void TextMesh::update(kFont id, const char* text)
for (auto p : parts)
{
if (max_width > 0 && x + p.w > max_width * f.scale /*font scale factor*/)
if (max_width > 0 && x + p.w > max_width * f.scale)
{
x = 0;
y += f.size * f.scale;

View File

@@ -28,9 +28,6 @@ void NodeDialogExportPPBR::init()
void NodeDialogExportPPBR::init_controls()
{
btn_ok = find<NodeButton>("btn-ok");
btn_ok->on_click = [this] (Node*) {
start_exporting();
};
btn_cancel = find<NodeButton>("btn-cancel");
btn_cancel->on_click = [this](Node*) {
destroy();
@@ -43,13 +40,14 @@ void NodeDialogExportPPBR::init_controls()
btn_header_clear->on_click = [this] (Node*) {
m_header_image.destroy();
img_header->tex.destroy();
txt_header_descr->SetVisibility(true);
};
btn_header_gen = find<NodeButton>("header-gen");
btn_header_gen->on_click = [this] (Node*) {
App::I->message_box("WIP", "This feature is not yet implemented.");
};
img_header = find<NodeImageTexture>("header-tex");
txt_header_descr = find<NodeText>("header-descr");
}
void NodeDialogExportPPBR::open_header()
@@ -58,14 +56,10 @@ void NodeDialogExportPPBR::open_header()
m_header_image.load(path);
m_header_image.resize(256, 128);
img_header->tex.create(m_header_image);
txt_header_descr->SetVisibility(false);
});
}
void NodeDialogExportPPBR::start_exporting()
{
}
void NodeDialogExportPPBR::added(Node* parent)
{
NodeBorder::added(parent);

View File

@@ -15,11 +15,11 @@ public:
NodeButton* btn_header_gen;
NodeImageTexture* img_header;
Image m_header_image;
NodeText* txt_header_descr;
virtual Node* clone_instantiate() const override;
virtual void clone_finalize(Node* dest) const override;
virtual void init() override;
virtual void added(Node* parent) override;
void init_controls();
void open_header();
void start_exporting();
};