Exemplo n.º 1
0
bool Image::loadFromFile(String fileName)
{
	complete = false;
	std::vector<uint8_t>* bytes;

	static String b64("data:image/png;base64,");
	if (fileName.size() > b64.size() && String(fileName.begin(), fileName.begin() + b64.size()) == b64)
	{
		// Read image from Base64 encoded URL
		bytes = fromBase64(fileName.c_str() + b64.size());
		complete = loadFromBuffer(bytes->data(), bytes->size());
		delete bytes;
		__BGRA = false;
	}
	else
	{
		CocoAssetFile* file = CocoAssetFile::open(fileName);
		if (file)
		{
			complete = loadFromBuffer(file->getData(), file->bytesLength());
			delete file;
		}
	}

	if (complete)
		src = fileName;

	return complete;
}
Exemplo n.º 2
0
void CocoFontsCache::add(std::string name, FONT_STYLE style, const char* filename)
{
	trace("CocoFontsCache::add(%s)", name.c_str());
	CocoFontsCache ff(name, style);
	if(fonts.find(ff) != fonts.end()) return;
	CocoAssetFile* file = CocoAssetFile::open(filename);
	if(!file) return;
	switch(file->mime)
	{
		case CocoAssetFile::MIME::FONT_TTF:
		{
			FT_Face ftFace;
			int er = 0;
			if((er = FT_New_Memory_Face(ftLibrary, (const FT_Byte*)file->getData(), file->getLength(), 0, &ftFace)))
			{
				trace("Could not load FreeType Face(%d)!", er);
			}
			fonts.insert(std::pair<CocoFontsCache, FT_Face>(ff, ftFace));
			break;
		}
		default:
			trace("Unsupported font type!\n");
			return;
	}
}
Exemplo n.º 3
0
void XMLHttpRequest::open(String method, String url, bool async)
{
	status = UNSENT;
	statusText = "";
	responseType = "";
	responseText = "";
	response = nullptr;
	dataAvailable = false;
	this->async = async;

	if(url.at(0)=='.')
	{
		// Hack for reading local files
		CocoAssetFile* file = CocoAssetFile::open(url.c_str());
		if(file)
		{
			response = new ArrayBuffer(file->getData(), file->bytesLength());

			// Set response flags
			status = 200;
			statusText = "OK";
			dataAvailable = true;
			responseType = "arraybuffer";
			responseURL = String("file:///") + file->fileName;
			responseText = String( (const char*) file->getData());
			readyState=DONE;

			delete file;
		}
	}
	else
	{
		// Start a libcurl easy session
		curl = curl_easy_init();

		// Store "this" as a private pointer to curl
		curl_easy_setopt(curl, CURLOPT_PRIVATE, static_cast<void*>(this));

		// Set http method
		std::transform(method.begin(), method.end(), method.begin(), ::toupper);
		if(method=="GET") curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
		else if(method=="POST") curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1);

		// Set url
		curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

		// skip all signal handling
		curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);

		// follow HTTP 3xx redirects
		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);

		// set user agent
		curl_easy_setopt(curl, CURLOPT_USERAGENT, APPNAME);

		// set callback for writing received data
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_callback);
		curl_easy_setopt(curl, CURLOPT_WRITEDATA, static_cast<void*>(&responseDataBuffer));

		//  set callback for writing received header data
		curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, curl_callback);
		curl_easy_setopt(curl, CURLOPT_WRITEHEADER, static_cast<void*>(&responseHeadersBuffer));

		responseURL = url;
		readyState = OPENED;
	}
}