Пример #1
0
	void registerAffectorFactory(chstr typeName, Affector* (*factory)(chstr))
	{
		if (gAffectorFactories.has_key(typeName))
		{
			throw hl_exception("Affector Factory '" + typeName + "' already exists!");
		}
		gAffectorFactories[typeName] = factory;
	}
Пример #2
0
	grect hstr_to_grect(chstr string)
	{
		harray<hstr> data = string.split(aprilui::SeparatorParameter);
		if (data.size() != 4)
		{
			throw hl_exception("Cannot convert string '" + string + "' to gtypes::Rectangle.");
		}
		return grect(data[0].trim(), data[1].trim(), data[2].trim(), data[3].trim());
	}
Пример #3
0
	gvec2 hstr_to_gvec2(chstr string)
	{
		harray<hstr> data = string.split(aprilui::SeparatorParameter);
		if (data.size() != 2)
		{
			throw hl_exception("Cannot convert string '" + string + "' to gtypes::Vector2.");
		}
		return gvec2(data[0].trim(), data[1].trim());
	}
Пример #4
0
	void _createWindowSystem(WindowType windowType)
	{
		// creating the windowsystem
		WindowType window = windowType;
		if (window == WS_DEFAULT)
		{
			window = WS_INTERNAL_DEFAULT;
		}
#ifdef _WIN32_WINDOW
		if (april::window == NULL && window == WS_WIN32)
		{
			april::window = new Win32_Window();
		}
#endif
#ifdef _WINRT_WINDOW
		if (april::window == NULL && window == WS_WINRT)
		{
			april::window = new WinRT_Window();
		}
#endif
#ifdef _SDL_WINDOW
		if (april::window == NULL && window == WS_SDL)
		{
			april::window = new SDL_Window();
		}
#endif
#ifdef _COCOA_WINDOW
		if (april::window == NULL && window == WS_MAC)
		{
			april::window = new Mac_Window();
		}
#endif
#ifdef _IOS
		if (april::window == NULL && window == WS_IOS)
		{
			april::window = new iOS_Window();
		}
#endif
#ifdef _ANDROIDJNI_WINDOW
		if (april::window == NULL && window == WS_ANDROIDJNI)
		{
			april::window = new AndroidJNI_Window();
		}
#endif
#ifdef _OPENKODE_WINDOW
		if (april::window == NULL && window == WS_OPENKODE)
		{
			april::window = new OpenKODE_Window();
		}
#endif
		if (april::window == NULL)
		{
			throw hl_exception("Could not create given windowsystem!");
		}
	}
Пример #5
0
	Mutex::Mutex()
	{
#ifdef _WIN32
#ifndef _WINRT // WinXP does not have CreateMutexEx()
		this->handle = CreateMutex(0, 0, 0);
#else
		this->handle = CreateMutexEx(NULL, NULL, 0, SYNCHRONIZE);
#endif
		if (this->handle == 0)
		{
			throw hl_exception("Could not create mutex.");
		}
#else
		this->handle = (pthread_mutex_t*)malloc(sizeof(pthread_mutex_t));
		pthread_mutex_init((pthread_mutex_t*)this->handle, 0);
#endif
	}
Пример #6
0
	void _createRenderSystem(RenderSystemType renderSystemType)
	{
		// creating the rendersystem
		RenderSystemType renderSystem = renderSystemType;
		if (renderSystem == RS_DEFAULT)
		{
			renderSystem = RS_INTERNAL_DEFAULT;
		}
#ifdef _DIRECTX9
		if (april::rendersys == NULL && renderSystem == RS_DIRECTX9)
		{
			april::rendersys = new DirectX9_RenderSystem();
		}
#endif
#ifdef _DIRECTX11
		if (april::rendersys == NULL && renderSystem == RS_DIRECTX11)
		{
			april::rendersys = new DirectX11_RenderSystem();
		}
#endif
#ifdef _OPENGL1
		if (april::rendersys == NULL && renderSystem == RS_OPENGL1)
		{
			april::rendersys = new OpenGL1_RenderSystem();
		}
#endif
#ifdef _OPENGLES1
		if (april::rendersys == NULL && renderSystem == RS_OPENGLES1)
		{
			april::rendersys = new OpenGLES1_RenderSystem();
		}
#endif
#ifdef _OPENGLES2
		if (april::rendersys == NULL && renderSystem == RS_OPENGLES2)
		{
			april::rendersys = new OpenGLES2_RenderSystem();
		}
#endif
		if (april::rendersys == NULL)
		{
			throw hl_exception("Could not create given rendersystem!");
		}
	}
Пример #7
0
	bool LabelBase::setProperty(chstr name, chstr value)
	{
		if (name == "font")						this->setFont(value);
		else if (name == "text_key")			this->setTextKey(value);
		else if (name == "text")				this->setText(value);
		else if (name == "horz_formatting")
		{
			if (value == "left")				this->setHorzFormatting(atres::LEFT);
			else if (value == "right")			this->setHorzFormatting(atres::RIGHT);
			else if (value == "center")			this->setHorzFormatting(atres::CENTER);
			else if (value == "left_wrapped")	this->setHorzFormatting(atres::LEFT_WRAPPED);
			else if (value == "right_wrapped")	this->setHorzFormatting(atres::RIGHT_WRAPPED);
			else if (value == "center_wrapped")	this->setHorzFormatting(atres::CENTER_WRAPPED);
			else if (value == "justified")		this->setHorzFormatting(atres::JUSTIFIED);
			else
			{
				hlog::warn(aprilui::logTag, "'horz_formatting=' does not support value '" + value + "'.");
				return false;
			}
		}
		else if (name == "vert_formatting")
		{
			if (value == "top")			this->setVertFormatting(atres::TOP);
			else if (value == "center")	this->setVertFormatting(atres::CENTER);
			else if (value == "bottom")	this->setVertFormatting(atres::BOTTOM);
			else
			{
				hlog::warn(aprilui::logTag, "'vert_formatting=' does not support value '" + value + "'.");
				return false;
			}
		}
		else if (name == "text_color")			this->setTextColor(value);
		else if (name == "color")
		{
			throw hl_exception("LabelBase instance using 'color=' which is conflicted with TextImageButton's color and cannot be used! Maybe you meant 'text_color='?");
		}
		else if (name == "effect")
		{
			this->setFontEffect(atres::NONE);
			this->setUseFontEffectColor(false);
			harray<hstr> values = value.split(":", -1, true);
			if (values.size() > 0)
			{
				if (values[0] == "none")		this->setFontEffect(atres::NONE);
				else if (values[0] == "shadow")	this->setFontEffect(atres::SHADOW);
				else if (values[0] == "border")	this->setFontEffect(atres::BORDER);
				else
				{
					hlog::warn(aprilui::logTag, "'effect=' does not support value '" + values[0] + "'.");
					return false;
				}
				if (values.size() > 1)
				{
					if (values[1].is_hex() && (values[1].size() == 6 || values[1].size() == 8))
					{
						this->setUseFontEffectColor(true);
						this->setFontEffectColor(values[1]);
					}
					else
					{
						hlog::warn(aprilui::logTag, "'effect=' is using invalid color modifier '" + values[1] + "'.");
						return false;
					}
				}
			}
		}
		else if (name == "text_offset_x")		this->textOffset.x = (float)value;
		else if (name == "text_offset_y")		this->textOffset.y = (float)value;
		else if (name == "background_color")	this->setBackgroundColor(value);
		else return false;
		return true;
	}