7
#include "Precompiled.h"
8
#include "FontTextureController.h"
9
#include "FactoryManager.h"
10
#include "DataSelectorManager.h"
11
#include "DataManager.h"
12
#include "PropertyUtility.h"
13
#include "ScopeManager.h"
14
#include "DataUtility.h"
15
#include "CommandManager.h"
16
#include <MyGUI_ResourceTrueTypeFont.h>
17
#include "FontExportSerializer.h"
22
FACTORY_ITEM_ATTRIBUTE(FontTextureController)
24
FontTextureController::FontTextureController() :
31
FontTextureController::~FontTextureController()
35
void FontTextureController::setTarget(Control* _control)
37
mControl = _control->findControl<ScopeTextureControl>();
40
void FontTextureController::activate()
42
mParentTypeName = "Root";
45
ScopeManager::getInstance().eventChangeScope.connect(this, &FontTextureController::notifyChangeScope);
46
notifyChangeScope(ScopeManager::getInstance().getCurrentScope());
48
CommandManager::getInstance().getEvent("Command_GenerateFont")->connect(this, &FontTextureController::commandGenerateFont);
51
void FontTextureController::deactivate()
53
ScopeManager::getInstance().eventChangeScope.disconnect(this);
54
CommandManager::getInstance().getEvent("Command_GenerateFont")->disconnect(this);
57
void FontTextureController::notifyChangeDataSelector(DataPtr _data, bool _changeOnlySelection)
60
if (mParentData != nullptr && mParentData->getType()->getName() != mParentTypeName)
61
mParentData = nullptr;
64
PropertyPtr property = PropertyUtility::getPropertyByName("Font", "FontName");
65
if (property != nullptr)
67
texture = property->getValue();
70
updateTexture(texture);
73
void FontTextureController::notifyChangeProperty(PropertyPtr _sender)
75
if (!mActivated || !PropertyUtility::isDataSelected(_sender->getOwner()))
78
if (_sender->getOwner()->getType()->getName() == "Font")
80
if (_sender->getType()->getName() == "FontName")
81
updateTexture(_sender->getValue());
85
void FontTextureController::notifyChangeScope(const std::string& _scope)
87
if (mControl == nullptr)
90
if (_scope == mScopeName)
96
DataSelectorManager::getInstance().getEvent(mParentTypeName)->connect(this, &FontTextureController::notifyChangeDataSelector);
97
mParentData = DataUtility::getSelectedDataByType(mParentTypeName);
98
notifyChangeDataSelector(mParentData, false);
100
mControl->getRoot()->setUserString("CurrentScopeController", mScopeName);
109
DataSelectorManager::getInstance().getEvent(mParentTypeName)->disconnect(this);
110
mParentData = nullptr;
112
// �� ��� ��������� �������� ���������� ���
113
std::string value = mControl->getRoot()->getUserString("CurrentScopeController");
114
if (value == mScopeName)
116
mControl->getRoot()->setUserString("CurrentScopeController", "");
117
notifyChangeDataSelector(mParentData, false);
119
mControl->clearAll();
127
void FontTextureController::updateTexture(const std::string& _value)
129
MyGUI::IResource* resource = MyGUI::ResourceManager::getInstance().findByName(_value);
130
MyGUI::ResourceTrueTypeFont* font = resource != nullptr ? resource->castType<MyGUI::ResourceTrueTypeFont>(false) : nullptr;
132
MyGUI::ITexture* texture = font != nullptr ? font->getTextureFont() : nullptr;
133
std::string value = texture != nullptr ? texture->getName() : "";
135
mControl->setTextureValue(value);
136
mControl->resetTextureRegion();
139
void FontTextureController::commandGenerateFont(const MyGUI::UString& _commandName, bool& _result)
141
if (mParentData != nullptr)
143
DataPtr font = (mParentData != nullptr) ? mParentData->getChildSelected() : nullptr;
146
FontExportSerializer::generateFont(font);
147
notifyChangeDataSelector(mParentData, false);
148
updateResultPropery(font);
150
CommandManager::getInstance().executeCommand("Command_OnGenerateFont");
155
void FontTextureController::updateResultPropery(DataPtr _data)
157
MyGUI::IResource* resource = MyGUI::ResourceManager::getInstance().findByName(_data->getPropertyValue("FontName"));
158
MyGUI::ResourceTrueTypeFont* font = resource != nullptr ? resource->castType<MyGUI::ResourceTrueTypeFont>(false) : nullptr;
159
MyGUI::ITexture* texture = font != nullptr ? font->getTextureFont() : nullptr;
161
if (texture != nullptr)
162
_data->setPropertyValue("TextureSizeResult", MyGUI::utility::toString(texture->getWidth(), " ", texture->getHeight()));
164
_data->setPropertyValue("TextureSizeResult", "0 0");
167
_data->setPropertyValue("FontHeightPix", font->getDefaultHeight());
169
_data->setPropertyValue("FontHeightPix", "0");