Beispiel #1
0
	GLuint loadShader(const char * filename, GLenum shader_type, bool check_errors)
	{
		GLuint result = 0;
		string shaderCode = "";
		ifstream codeStream(filename, ios::in);

		if (codeStream.is_open())
		{
			string Line = "";
			while (getline(codeStream, Line))
			{
				shaderCode +=  Line;
				shaderCode += "\n";
			}
				
			codeStream.close();
		}

		result = glCreateShader(shader_type);

		// Compile Vertex Shader
		//cout << "Compiling shader : " << filename << endl;
		char const * codePointer = shaderCode.c_str();

		glShaderSource(result, 1, &codePointer, NULL);
		glCompileShader(result);

		if (check_errors)
		{
			GLint status = 0;
			glGetShaderiv(result, GL_COMPILE_STATUS, &status);

			if (!status)
			{
				char buffer[4096];    
				glGetShaderInfoLog(result, 4096, NULL, buffer);

				cout << filename << buffer << endl;
			}
		}

		return result;
	}
Beispiel #2
0
bool MwWebServer::GenerateHtmlContents(MwString requestFile, MwWebRequest *request, MwBaseStream *responseContents)
{
	MwString fileName = this->rootPath + "\\" + requestFile;

	if (!this->fileSystem->FileExists(fileName))
		return false;

	MwFileStream codeStream(fileName.contents, FileStreamAccessMode_Read);

	char *sourceData = new char[(unsigned int)codeStream.length + 1];
	codeStream.ReadData(sourceData, codeStream.length);
	sourceData[codeStream.length] = 0;
	MwString source(sourceData);
	delete[] sourceData;

	MwString output;

	// TODO: Real parsing of html

	int parsedIndex = 0;
	while (parsedIndex < source.length)
	{
		int mwwTagStart = source.IndexOf("<mww", parsedIndex);
		int mwwTagEnd = -1;
		if (mwwTagStart != -1)
		{
			int classNameStart = source.IndexOf("component=\"", mwwTagStart + 5);
			if (classNameStart != -1)
			{
				classNameStart += 11;
				int classNameEnd = source.IndexOf("\"", classNameStart);
				if (classNameEnd != -1)
				{
					mwwTagEnd = source.IndexOf("/>", mwwTagStart);
					if (mwwTagEnd != -1)
						mwwTagEnd += 2;
					else
					{
						mwwTagEnd = source.IndexOf("</mww>", mwwTagStart);
						if (mwwTagEnd != -1)
							mwwTagEnd += 6;
					}

					if (mwwTagEnd != -1)
					{
						output += source.SubString(parsedIndex, mwwTagStart - parsedIndex);
						parsedIndex = mwwTagEnd;

						MwString className = source.SubString(classNameStart, classNameEnd - classNameStart);
						
						int componentIndex = this->components.count - 1;
						for (; componentIndex >= 0; componentIndex--)
							if (this->components[componentIndex]->name.Equals(className))
								break;

						if (componentIndex != -1)
						{
							MwString s = this->components[componentIndex]->Output(request);
							output += s;
						}
					}
				}
			}
		}

		if (mwwTagEnd == -1)
		{
			output += source.SubString(parsedIndex, source.length - parsedIndex);
			parsedIndex = source.length;
		}
	}
	
	responseContents->WriteData((void*)output.GetCharContents(), output.length);

	return true;
}